gpt4 book ai didi

log4net - 如何为每个附加程序定义不同的记录器级别

转载 作者:行者123 更新时间:2023-12-05 04:12:48 24 4
gpt4 key购买 nike

我正在尝试定义 2 个独立的 appender 以登录到 2 个文件。我定义“DebugAppender”的 DEBUG 级别,然后是“RelevantAppender”,我为“Security”和“ServerStats”记录器定义了不同的级别。

问题是这些记录器定义正在覆盖我的“DebugAppender”级别,现在它不处于 DEBUG 模式(所有记录器)。

如何让它按预期工作?

<log4net>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="plastic.debug.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %thread %property{TransactionID} %property{ClientMachine} %-5level %logger - %message%newline" />
</layout>
</appender>

<appender name="RelevantAppender" type="log4net.Appender.RollingFileAppender">
<file value="plastic.relevant.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %property{ClientMachine} %-5level %logger - %message%newline" />
</layout>`enter code here`
</appender>


<logger name="Security">
<level value="ERROR" />
<appender-ref ref="RelevantAppender" />
</logger>

<logger name="ServerStats">
<level value="INFO" />
<appender-ref ref="RelevantAppender" />
</logger>

<root>
<level value="DEBUG" />
<appender-ref ref="DebugAppender" />
</root>

最佳答案

您的问题是,您在 Logger 中所做的定义超过了以下所有级别。所以这是我的解决方案:

<log4net>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="plastic.debug.log.txt" />
<!--...-->
</appender>

<appender name="Security_RelevantAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="ERROR" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file value="plastic.relevant.log.txt" />
<!--...-->
</appender>

<appender name="Serverstat_RelevantAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="INFO" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--...-->
</appender>


<logger name="Security">
<appender-ref ref="Security_RelevantAppender" />
</logger>

<logger name="ServerStats">
<appender-ref ref="Serverstat_RelevantAppender" />
</logger>

<root>
<level value="DEBUG" />
<appender-ref ref="DebugAppender" />
</root>
</log4net>

定义 3 个不同的附加程序。 DebugAppender 的级别由 <root> 定义.两个相关的附加程序将两者写入具有不同日志级别(阈值)的同一文件。重要的是,您包括锁定模型 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> .否则,您调用的第一个附加程序将锁定文件,而第二个附加程序将无法写入文件(Can Log4net have multiple appenders write to the same file?)。在<logger>您只需定义两个不同的 appender 而没有 loglevel。这样它将从 appender 设置中获取级别。

当您这样做时,来自任何记录器的所有 debug+ 类型的事件都将写入 plastic.debug.log.txt .至plastic.relevant.log.txt仅写入来自 security-logger 的事件 error+ 和来自 serverstat-logger 的 info+。

希望对你有帮助

关于log4net - 如何为每个附加程序定义不同的记录器级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517450/

24 4 0
文章推荐: servlets - 无法获得 RequestDispatcher
文章推荐: firefox - 在 FireFox/Mozilla 中为