繁体   English   中英

将log4net与单独的配置文件一起使用

[英]Use log4net with separate config file

我的AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

我就像你说的那样改变结构

(i just change the <file value="..\Logs\\CurrentLog" /> to <file value="D:\Log\Log.txt" />):

<?xml version="1.0" encoding="UTF-8"?>
<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender"/>
  </root>
  <appender name="RollingLogFileAppender"  type="log4net.Appender.RollingFileAppender">
    <file value="D:\Log\Log.txt" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />

    <rollingStyle value="Date" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />

      <levelMin value="INFO" />
      <levelMax value="FATAL" />
    </filter>

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern
      value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>
</log4net>

并定义日志:

private static readonly ILog Log = LogManager.GetLogger("Logger");

但是仍然没有创建log.txt文件!

实际上,您尚未在配置中声明记录器,它的结构错误。 它应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<log4net>
    <logger name="Logger">
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender"/>
    </logger>
    <appender name="RollingLogFileAppender"  type="log4net.Appender.RollingFileAppender">
        <file value="..\Logs\\CurrentLog" />
        <appendToFile value="true" />
        <datePattern value="yyyyMMdd" />

        <rollingStyle value="Date" />
        <filter type="log4net.Filter.LevelRangeFilter">
            <acceptOnMatch value="true" />

            <levelMin value="INFO" />
            <levelMax value="FATAL" />
        </filter>

        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern 
            value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
        </layout>
    </appender>
</log4net>

现在您可以通过以下方式访问它:

private static readonly ILog Log = LogManager.GetLogger("Logger");

绝对可以。

现在介绍您的代码段。 我不确定您的初始化。 我没有以这种方式使用log4net:

private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

但是,您可以尝试在root声明logger并将其初始化:

<?xml version="1.0" encoding="UTF-8"?>
<log4net>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender"  type="log4net.Appender.RollingFileAppender">
        <file value="..\Logs\\CurrentLog" />
        <appendToFile value="true" />
        <datePattern value="yyyyMMdd" />

        <rollingStyle value="Date" />
        <filter type="log4net.Filter.LevelRangeFilter">
            <acceptOnMatch value="true" />

            <levelMin value="INFO" />
            <levelMax value="FATAL" />
        </filter>

        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern 
            value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
        </layout>
    </appender>
</log4net>

// ...
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

您的配置文件中缺少某些内容。

<log4net>
  <logger name="default">
    <level value="ALL"/>
  </logger>

  <root>
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="..\Logs\\CurrentLog" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <rollingStyle value="Date" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="INFO" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern 
      value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>
</log4net>

还有声明:

private static readonly ILog Log = LogManager.GetLogger("default");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM