使用web.config配置Serilog文件

3
我正在尝试为一个 .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("测试日志"); // 它没有考虑从Web.Config中获取outputTemplate,也没有记录AppName


只是一个注释,与答案并不真正相关 - 在代码中使用 WriteTo.File() 很可能对您的用例更有好处; 丰富记录的日志与登录用户 id,并使用 Serilog.Sinks.Map 基于添加的属性将日志事件路由到文件应该比手动创建每个用户日志文件更有效和更健壮。希望有所帮助! - Nicholas Blumhardt
1个回答

3

无法在代码中混合使用XML配置和WriteTo.File()

要么在XML中指定File.path(如您所示,已注释掉),或者将其他设置(如File.outputTemplate)提供给WriteTo.File()


无法混合。谢谢回答。 - Prasad Kanaparthi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接