【发布时间】:2020-03-29 20:07:06
【问题描述】:
我正在尝试为 .NET FW 4.7.1 项目配置 Serilog。这是我的 web.config 中的内容:
问题:serilog:write-to:File.outputTemplate 不工作
<appSettings>
<add key="serilog:minimum-level" value="Debug" />
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<!--<add key="serilog:write-to:File.path" value="C:\Logs" />--> (This will be dynamically generate, Per User)
<add key="serilog:write-to:File.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u4}] | ({**AppName**}) | {Message:lj}{NewLine}{Exception}" />
<add key="serilog:write-to:File.shared" value="true" />
<add key="serilog:write-to:File.rollingInterval" value="Day"/>
<add key="serilog:enrich:with-property:AppName" value="MyApp" />
</appSettings>
在代码中,
var userlogPath = Path.Combine("C:\Logs", $"User_{UserId}_.log"); // Logged in **UserId** will be passed.
var logger = Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.WriteTo.File(userlogPath)
.CreateLogger();
logger.Information("Test Log"); // 不考虑来自 Web.Config 的 outputTemplate。也没有记录AppName。
【问题讨论】:
-
只是一个并不真正属于答案的注释 - 在代码中使用
WriteTo.File()很可能会更适合您的用例;使用登录的用户 ID 丰富日志,并使用 Serilog.Sinks.Map 根据添加的属性将日志事件路由到文件,应该比手动创建每个用户的日志文件更有效和更健壮。 HTH!