ASP.NET Boilerplate使用Log4Net和Castle Logging添加其他日志文件

时间:2018-09-05 16:28:56

标签: log4net aspnetboilerplate

我一直在寻找有关如何在ASP.NET Boilerplate MVC中使用单独的日志文件的文档和指南。

直接将ILogger注入并将消息推送到默认的Log.txt文件中是很直接的,但是我需要一个单独的日志文件来记录很多批处理作业消息并保持整洁。

我找不到任何方法来使用Log4Net.config文件中的另一个日志。任何人都可以建议正确的代码/配置吗?

2 个答案:

答案 0 :(得分:1)

因此,我在查看Hangfire文档时偶然发现了答案,该文档显示您可以通过让Log4Net侦听Hangfire名称和基于该名称的路由来配置将Hangfire消息发送到另一个日志文件。

使用Log4Net.config中的以下附加配置,现在我可以在MyClass中正常创建的日志消息发送到MyClass.txt日志文件:

mydog

为了完整起见,它被称为AspNet Boilerplate文档中记录的标准方式:

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

答案 1 :(得分:0)

方法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>

方法2:

您可以通过使用附加名称调用LogManager.GetLogger()来获得特定的记录器。

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