日志记录在应用程序中部分工作

本文关键字:工作 中部 应用程序 记录 日志 | 更新日期: 2023-09-27 18:36:25

在我的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");

之后我只使用记录器。信息,记录器。类中不同地方的错误方法。从第一页开始,所有内容都进入MyWPFApplication.txt文件,但任何后续页面都没有内容。奇怪的是,在 Logs 文件夹中,我确实看到有另一个文件(null)正在创建.txt但它是空的。你在这里看到我可能做错了什么吗?

日志记录在应用程序中部分工作

合乎逻辑的解释是,您在其他类中具有不同的记录器名称。检查名称是否为 idd 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>

日志4网常见问题