diff options
| author | Bond_009 <bond.009@outlook.com> | 2018-12-14 22:07:28 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2018-12-30 22:44:38 +0100 |
| commit | a51798dd8d1fe71357c7926e9657f2c67cd40ed7 (patch) | |
| tree | 4bb5f1934afe5041552e69ac67aa0513e5c4545f | |
| parent | 88f5471fe35657f410ddb8a58c84505301bda121 (diff) | |
Added logging.json file
| -rw-r--r-- | MediaBrowser.Server.Mono/EmbyServer.csproj | 10 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/Program.cs | 51 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/Resources/Configuration/logging.json | 19 |
3 files changed, 73 insertions, 7 deletions
diff --git a/MediaBrowser.Server.Mono/EmbyServer.csproj b/MediaBrowser.Server.Mono/EmbyServer.csproj index 038a26f9d..da7883e6b 100644 --- a/MediaBrowser.Server.Mono/EmbyServer.csproj +++ b/MediaBrowser.Server.Mono/EmbyServer.csproj @@ -17,9 +17,13 @@ </PropertyGroup> <ItemGroup> + <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" /> <PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" /> <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> - <PackageReference Include="Serilog.Sinks.Console" Version="3.0.0" /> + <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> + <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> + <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> + <PackageReference Include="SkiaSharp" Version="1.68.0" /> <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="1.1.11" /> <PackageReference Include="SQLitePCLRaw.core" Version="1.1.11" /> @@ -51,6 +55,10 @@ </ItemGroup> <ItemGroup> + <EmbeddedResource Include="Resources/Configuration/*" /> + </ItemGroup> + + <ItemGroup> <Compile Include="..\SharedVersion.cs" /> </ItemGroup> 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(); diff --git a/MediaBrowser.Server.Mono/Resources/Configuration/logging.json b/MediaBrowser.Server.Mono/Resources/Configuration/logging.json new file mode 100644 index 000000000..68b57b276 --- /dev/null +++ b/MediaBrowser.Server.Mono/Resources/Configuration/logging.json @@ -0,0 +1,19 @@ +{ + "Serilog": { + "MinimumLevel": "Information", + "WriteTo": [ + { "Name": "Console", + "Args": { + "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message}{NewLine}{Exception}" + } + }, + { "Name": "File", + "Args": { + "path": "logs//log_.log", + "rollingInterval": "Day", + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}" + } + } + ] + } +} |
