Browse Source

More log dir configurable

Bond_009 6 years ago
parent
commit
6d9ee138d6

+ 1 - 0
CONTRIBUTORS.md

@@ -7,6 +7,7 @@
  - [EraYaN](https://github.com/EraYaN)
  - [flemse](https://github.com/flemse)
  - [bfayers](https://github.com/bfayers)
+ - [Bond_009](https://github.com/Bond-009)
 
 # Emby Contributors
 

+ 1 - 0
MediaBrowser.Server.Mono/EmbyServer.csproj

@@ -17,6 +17,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.0" />
     <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" />

+ 11 - 4
MediaBrowser.Server.Mono/Program.cs

@@ -154,8 +154,13 @@ namespace MediaBrowser.Server.Mono
             }
         }
 
-        private static async Task createLogger()
+        private static void createLogger()
         {
+            var logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
+            if (string.IsNullOrEmpty(logDir)){
+                logDir = Path.Combine(_appPaths.ProgramDataPath, "logs");
+                Environment.SetEnvironmentVariable("JELLYFIN_LOG_DIR", logDir);
+            }
             try
             {
                 string path = Path.Combine(_appPaths.ProgramDataPath, "logging.json");
@@ -168,11 +173,13 @@ namespace MediaBrowser.Server.Mono
                     using (Stream rscstr = assembly.GetManifestResourceStream(resourcePath))
                     using (Stream fstr = File.Open(path, FileMode.CreateNew))
                     {
-                        await rscstr.CopyToAsync(fstr);
+                        rscstr.CopyTo(fstr);
                     }
                 }
                 var configuration = new ConfigurationBuilder()
-                    .AddJsonFile(path)
+                    .SetBasePath(_appPaths.ProgramDataPath)
+                    .AddJsonFile("logging.json")
+                    .AddEnvironmentVariables("JELLYFIN_")
                     .Build();
 
                 Serilog.Log.Logger = new LoggerConfiguration()
@@ -185,7 +192,7 @@ namespace MediaBrowser.Server.Mono
                 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"),
+                        Path.Combine(logDir, "logs", "log_.log"),
                         rollingInterval: RollingInterval.Day,
                         outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}")
                     .Enrich.FromLogContext()

+ 2 - 2
MediaBrowser.Server.Mono/Resources/Configuration/logging.json

@@ -4,12 +4,12 @@
         "WriteTo": [
             { "Name": "Console",
                 "Args": {
-                    "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message}{NewLine}{Exception}"
+                    "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
                 }
             },
             { "Name": "File",
                 "Args": {
-                    "path": "logs//log_.log",
+                    "path": "%JELLYFIN_LOG_DIR%//log_.log",
                     "rollingInterval": "Day",
                     "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}"
                 }