ASP.NET Boilerplate добавление дополнительного файла журнала с помощью Log4Net и Castle Logging - PullRequest
0 голосов
/ 05 сентября 2018

Я пытался найти документацию и рекомендации по использованию отдельного файла журнала в ASP.NET Boilerplate MVC.

Вполне просто внедрить ILogger и отправить сообщения в файл Log.txt по умолчанию, однако мне нужен отдельный файл журнала для записи большого количества сообщений о пакетных заданиях и поддержания порядка.

Я не могу найти какие-либо методы для использования другого журнала из файла Log4Net.config. Кто-нибудь может посоветовать правильный код / ​​конфигурацию?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Поэтому я случайно нашел ответ, просмотрев документацию Hangfire, где было показано, что вы можете настроить отправку сообщений Hangfire в другой файл журнала, заставив Log4Net прослушивать имя и маршрут Hangfire на его основе.

Со следующей дополнительной конфигурацией в Log4Net.config у меня теперь есть сообщения журнала, которые обычно создаются в MyClass и отправляются в файл журнала MyClass.txt:

<appender name="RollingFileAppender_MyClass" type="log4net.Appender.RollingFileAppender" >
  <file value="App_Data/Logs/MyClass.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="32" />
  <maximumFileSize value="10000KB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
  </layout>
</appender>

<logger additivity="false" name="MyNamespace.MyClass">
  <level value="DEBUG" />
  <appender-ref ref="RollingFileAppender_MyClass" />
</logger>

А для полноты он вызывается стандартным способом, задокументированным в документации AspNet Boilerplate:

https://aspnetboilerplate.com/Pages/Documents/Logging

0 голосов
/ 07 сентября 2018

Way-1:

В этом примере файл журнала по умолчанию: App_Data/Logs/Logs.txt.

Но когда я использую регистратор в пространстве имен MySite.Web.Controllers.PaymentController, журналы будут записываться в App_Data/Logs/PaymentLogs.txt

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<log4net>

  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="App_Data/Logs/Logs.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppender_PaymentController" type="log4net.Appender.RollingFileAppender" >
    <file value="App_Data/Logs/PaymentLogs.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="32" />
    <maximumFileSize value="10000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
  </appender>

  <root>
    <appender-ref ref="RollingFileAppender" />
    <level value="DEBUG" />
  </root>

  <logger name="NHibernate">
    <level value="WARN" />
  </logger>

  <logger name="MySite.Web.Controllers.PaymentController" additivity="false">
    <appender-ref ref="RollingFileAppender_PaymentController" />
    <level value="DEBUG" />
  </logger>

</log4net>

Way-2:

Вы можете получить определенный регистратор, позвонив LogManager.GetLogger() с именем аппендера.

private static readonly ILog paymentLogger = LogManager.GetLogger("MySite.Web.Controllers.PaymentController");
...