繁体   English   中英

记录应用程序中的部分工作

[英]Logging partially working in the application

在WPF应用程序中,我正在使用log4net进行日志记录。 该应用程序实现了几个页面。 我的问题是从第一页开始记录工作。 用户导航到的任何其他页面,日志文件中没有任何内容。 我也没有任何例外。

这是在我的app.config设置方法:

<log4net>
    <!-- Define some output appenders -->
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="..\Logs\%property{LogName}.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="5MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
      </layout>

      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="MyWPFApplicationLog" />
        <acceptOnMatch value="false" />
      </filter>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="MyWPFApplicationAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="../Logs/MyWPFApplication.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="1" />
      <maximumFileSize value="100MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <logger name="MyWPFApplicationLog">
      <level value="INFO"/>
      <appender-ref ref="MyWPFApplicationAppender" />
    </logger>
  </log4net>

然后我在AssemblyInfo.cs有以下内容:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在我要记录日志的所有类中,我声明了以下内容。

private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("MyWPFApplicationLog");

之后,我只需在类的各个位置使用logger.Info,logger.Error方法。 从第一页开始,所有内容都进入MyWPFApplication.txt文件,但随后的任何页面都没有。 奇怪的是,在Logs文件夹中,我确实看到正在创建另一个文件(null).txt,但该文件为空。 您在这里看到我可能做错了什么吗?

逻辑上的解释是,您在其他类中使用了不同的记录器名称。 检查名称是否为MyWPFApplicationLog。 如果是这样,最好的选择是启用log4net调试以查看记录器是否正在工作/崩溃。 在您的web.config中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>

...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

Log4net常见问题解答

暂无
暂无

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

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