ASP.NET样板文件添加带有Log4Net和Castle日志记录的附加日志文件

ASP.NET样板文件添加带有Log4Net和Castle日志记录的附加日志文件,log4net,aspnetboilerplate,Log4net,Aspnetboilerplate,我一直在努力寻找有关如何在ASP.NET样板MVC中使用单独日志文件的文档和指南 注入ILogger并将消息推送到默认的Log.txt文件很简单,但是我需要一个单独的日志文件来记录大量批处理作业消息并保持整洁 我在Log4Net.config文件中找不到任何使用其他日志的方法。有人能就正确的代码/配置提供建议吗 第一条道路: 在此示例中,默认日志文件为App\u Data/Logs/Logs.txt 但是当我在命名空间MySite.Web.Controllers.PaymentControlle

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

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

我在Log4Net.config文件中找不到任何使用其他日志的方法。有人能就正确的代码/配置提供建议吗

第一条道路: 在此示例中,默认日志文件为
App\u Data/Logs/Logs.txt

但是当我在命名空间
MySite.Web.Controllers.PaymentController
中使用记录器时,日志将写入
App\u 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>

因此,我在查看Hangfire文档时偶然发现了答案,其中显示,通过让Log4Net监听Hangfire名称和路由,您可以将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>

感谢您的回复,但是这似乎不适用于ASP.NET样板文件。ILog和LogManager都无法解析。ILogger没有GetLogger的方法。在您的第一个选项中,我不清楚如何将appender(大概是通过名称)绑定到我不想登录的服务类,即Project.Images.ImageManager。
<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>