在使用 log4net 的 wpf 中,如何将异常和事件信息附加到一个附加程序并将数据附加到另一个附加程序

In wpf using log4net, how can I append exception and event info to one appender and append data to another appender

我正在构建一个 wpf 应用程序来为嵌入式系统提供 UI。 UI 向嵌入式系统发送命令和查询。 UI 还周期性地从嵌入式系统中读取数据。我正在使用 log4net。

我想将数据附加到一个 RollingLogFileAppender,并将异常、状态更改、事件等附加到另一个 RollingLogFileAppender。我的搜索还没有发现任何东西。我怎样才能像这样拆分日志记录?

只需添加两个具有不同名称的滚动文件附加程序。在两者上设置不同级别的过滤器。使用下面的配置,您可以执行此操作;

log.Info("my data message"); // goes to data-log.txt
log.Warn("my warning"); // goes to error-log.txt
log.Error("error!"); // goes to error-log.txt

配置

<log4net>
    <appender name="DataAppender" type="log4net.Appender.RollingFileAppender">
        <file value="data-log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="100KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO"/>
            <param name="LevelMax" value="INFO"/>
        </filter>
    </appender>

    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
        <file value="error-log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="100KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
        <evaluator type="log4net.Core.LevelEvaluator">
            <threshold value="WARN"/>
        </evaluator>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="DataAppender" />
      <appender-ref ref="ErrorAppender" />
    </root>
</log4net>