aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Mono/Program.cs
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2018-12-14 22:07:28 +0100
committerBond_009 <bond.009@outlook.com>2018-12-30 22:44:38 +0100
commita51798dd8d1fe71357c7926e9657f2c67cd40ed7 (patch)
tree4bb5f1934afe5041552e69ac67aa0513e5c4545f /MediaBrowser.Server.Mono/Program.cs
parent88f5471fe35657f410ddb8a58c84505301bda121 (diff)
Added logging.json file
Diffstat (limited to 'MediaBrowser.Server.Mono/Program.cs')
-rw-r--r--MediaBrowser.Server.Mono/Program.cs51
1 files changed, 45 insertions, 6 deletions
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index 0630df431..1e47322f1 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -23,6 +23,7 @@ using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certif
using System.Threading;
using InteropServices = System.Runtime.InteropServices;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Configuration;
using ILogger = Microsoft.Extensions.Logging.ILogger;
using Serilog;
using Serilog.AspNetCore;
@@ -53,12 +54,9 @@ namespace MediaBrowser.Server.Mono
var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath);
_appPaths = appPaths;
- using (var loggerFactory = new SerilogLoggerFactory(
- new LoggerConfiguration()
- .Enrich.FromLogContext()
- .WriteTo.Console()
- .CreateLogger()
- , true))
+ createLogger();
+
+ using (var loggerFactory = new SerilogLoggerFactory())
{
_loggerFactory = loggerFactory;
@@ -156,6 +154,47 @@ namespace MediaBrowser.Server.Mono
}
}
+ private static async Task createLogger()
+ {
+ try
+ {
+ string path = Path.Combine(_appPaths.ProgramDataPath, "logging.json");
+
+ if (!File.Exists(path))
+ {
+ var assembly = typeof(MainClass).Assembly;
+ // For some reason the csproj name is used instead of the assembly name
+ var resourcePath = "EmbyServer.Resources.Configuration.logging.json";
+ using (Stream rscstr = assembly.GetManifestResourceStream(resourcePath))
+ using (Stream fstr = File.Open(path, FileMode.CreateNew))
+ {
+ await rscstr.CopyToAsync(fstr);
+ }
+ }
+ var configuration = new ConfigurationBuilder()
+ .AddJsonFile(path)
+ .Build();
+
+ Serilog.Log.Logger = new LoggerConfiguration()
+ .ReadFrom.Configuration(configuration)
+ .Enrich.FromLogContext()
+ .CreateLogger();
+ }
+ catch (Exception ex)
+ {
+ Serilog.Log.Logger = new LoggerConfiguration()
+ .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}")
+ .WriteTo.File(
+ Path.Combine(AppContext.BaseDirectory, "logs", "log_.log"),
+ rollingInterval: RollingInterval.Day,
+ outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}")
+ .Enrich.FromLogContext()
+ .CreateLogger();
+
+ Serilog.Log.Logger.Fatal(ex, "Failed to read logger config");
+ }
+ }
+
private static MonoEnvironmentInfo GetEnvironmentInfo()
{
var info = new MonoEnvironmentInfo();