Настройка файла Serilog с помощью web.config - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь настроить Serilog для. NET FW 4.7.1 проекта. Вот что у меня в файле 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"); // Это не учитывает outputTemplate из Web.Config. Также не регистрируется AppName.

1 Ответ

2 голосов
/ 30 марта 2020

Невозможно смешать конфигурацию XML с WriteTo.File() в коде.

Либо File.path необходимо указать в XML (как вы показали, закомментировано) или другие параметры, например File.outputTemplate, необходимо указать для WriteTo.File().

...