【问题标题】:Configure jsnlog.log4net log file path配置 jsnlog.log4net 日志文件路径
【发布时间】:2016-03-18 04:50:20
【问题描述】:

我的 MVC 应用程序使用 log4net 进行服务器日志记录,我刚刚添加了 jsnlog.log4net 用于 javascript 日志记录。我按照官方指南进行了配置,并且运行良好。 而且我没有对 log4net.config 文件做任何更改。

现在 log4net 和 jsnlog 都使用相同的 txt 文件来记录他们的日志。我需要将那里的日志分成两个不同的文件。这样我就可以轻松识别服务器日志和 javascript 日志。

这是我的 log4net.config 文件。

<?xml version="1.0" encoding="utf-8" ?>
<log4netConfiguration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <appSettings>
    <add key="log4net.Config" value="log4net.config" />
  </appSettings>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="C:\buttonwood_logs\buttonwood_web_log\buttonwood_log_%date{ddMMyyyy}.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="5MB" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n"/> 
      </layout>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>
</log4netConfiguration>

【问题讨论】:

    标签: logging log4net log4net-configuration jsnlog


    【解决方案1】:

    要记录到两个文件,您需要有两个附加程序,每个附加程序都有一个记录器。

    由于您在配置中定义了根元素,因此最简单的方法是为您的 JavaScript 代码设置一个特定的记录器,然后让其他所有内容都转到现有的附加程序:

    <!-- additivity=false means "don't inherit appenders from the root logger" -->
    <logger name="JSLogger" additivity="false"> 
      <level value="INFO" />
      <appender-ref ref="JSFileAppender" />
    </logger>
    

    然后设置appender:

    <appender name="JSFileAppender" type="log4net.Appender.RollingFileAppender">
            <file type="log4net.Util.PatternString" 
                 value="C:\buttonwood_logs\jslog\buttonwood_log_%date{ddMMyyyy}.log" />
            … etc.
    

    当您在 jsnlog 中创建记录器时,您必须按名称引用它,例如GetLogger("JSLogger")

    【讨论】:

      【解决方案2】:

      在您的网络配置中。

      <jsnlog  serverSideLogger="ClientLog">
      

      在你的 log4net 标签中

      <log4net>
      <appender name="JSFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="..\Log\Client.log" />
        <appendToFile value="true" />
        <maximumFileSize value="100MB" />
        <maxSizeRollBackups value="5" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%d %level %thread - %message%newline" />
        </layout>
      </appender> 
      
      
      <logger name="ClientLog" additivity="false"> 
          <level value="DEBUG" />
          <appender-ref ref="JSFileAppender" />
      </logger>
      </log4net>
      

      logger name 必须与 jsnlog serverSideLogger config 具有相同的值

      【讨论】:

        【解决方案3】:

        尝试这样的事情:(有关更多信息,请参阅 codeproject 文章 - Use Multiple log4net Outputs from One Application

        <log4net>
            <appender type="log4net.Appender.RollingFileAppender" name="classApp1">
              <file value="c:\\Library1.txt" />
              <layout type="log4net.Layout.PatternLayout">
                <conversionpattern value="%d [%t] %-5p %c - %m%n" />
              </layout>
            </appender>
        
            <appender type="log4net.Appender.RollingFileAppender" name="classApp2">
              <file value="c:\\Library2.txt" />
              <layout type="log4net.Layout.PatternLayout">
                <conversionpattern value="%d [%t] %-5p %c - %m%n" />
              </layout>
            </appender>
        
            <appender type="log4net.Appender.RollingFileAppender" name="application">
              <file value="c:\\Application.txt" />
              <layout type="log4net.Layout.PatternLayout">
                <conversionpattern value="%d [%t] %-5p %c - %m%n" />
              </layout>
            </appender>
        
            <logger name="ClassLibrary1">
              <level value="ERROR" />
              <maximumfilesize value="256KB" />
              <param value="ERROR" name="Threshold" />
        
              <appender-ref ref="classApp1" />
            </logger>
        
            <logger name="ClassLibrary2">
              <level value="WARN" />
              <maximumfilesize value="256KB" />
              <param value="WARN" name="Threshold" />
        
              <appender-ref ref="classApp2" />
            </logger>
        
            <logger name="WindowsApplication1">
              <level value="WARN" />
              <maximumfilesize value="256KB" />
              <param value="WARN" name="Threshold" />
        
              <appender-ref ref="application" />
            </logger>
        
          </log4net>
        

        【讨论】:

        • 记录器没有maximumfilesize 属性,当您可以直接设置属性时,您不会真的想使用param 语法。也许在 2007 年写这篇文章的时候情况有所不同。
        • 也许,但是盲目地粘贴混合来自记录器和附加器的属性的无效配置是没有帮助的(记录器也没有Threshold 属性)。
        猜你喜欢
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多