【问题标题】:In wpf using log4net, how can I append exception and event info to one appender and append data to another appender在使用 log4net 的 wpf 中,如何将异常和事件信息附加到一个附加程序并将数据附加到另一个附加程序
【发布时间】:2015-08-24 02:07:49
【问题描述】:

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

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

【问题讨论】:

    标签: wpf log4net


    【解决方案1】:

    只需添加两个具有不同名称的滚动文件附加程序。在两者上设置不同级别的过滤器。使用下面的配置,您就可以做到这一点;

    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>
    

    【讨论】:

    • 我必须对两个附加程序都使用 LevelRangeFilter 才能使其工作。
    • 很奇怪,第二个 appender 中存在 evaluator + threshold 应该意味着只附加 WARN 或更高的日志。
    • 谢谢。我在我的answer to my own question 中记下了你。如您所见,我一直在尝试这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2011-01-21
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多