Log4j-优先级值和参数名称概念说明

Log4j-优先级值和参数名称概念说明,log4j,logging,Log4j,Logging,Mylog4j.xml: <appender name="B2BAPP" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/LOGS/SAM/B2B_VJ.log"/> <param name="Threshold" value="ERROR"/> <param name="MaxFileSize" value="100

My
log4j.xml

 <appender name="B2BAPP" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="/LOGS/SAM/B2B_VJ.log"/>   
     <param name="Threshold" value="ERROR"/> 
     <param name="MaxFileSize" value="10000KB"/>
     <param name="MaxBackupIndex" value="10"/>
     <param name="Append" value="false"/>
     <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} %5p [%c:%L] %m%n"/>
     </layout>      
</appender>

<logger name="com.sas">    
   <priority value="DEBUG"/>
   <appender-ref ref="B2BAPP"/>
</logger>

我想了解priority value=“DEBUG”param name=“Threshold”value=“DEBUG”的行为

在我的记录器(
com.sas
)中,我设置了优先级值“DEBUG”,该记录器的附加器是“B2BAPP”,在“B2BAPP”中,我将“Threshold”定义为“ERROR”

那么“com.sas”的日志级别将设置为“DEBUG”或“ERROR”

案例:

priority value=“DEBUG”和param name=“Threshold”value=“ERROR”

priority value=“ERROR”和param name=“Threshold”value=“DEBUG”


上述案例的结果是什么?它是如何工作的?

记录器
组件接受日志记录指令(
Logger.debug()
Logger.error()
etc调用),并将它们发送到相应的目的地到
附件
s

您可以在
记录器上设置“优先级”,并指示其仅接受特定级别的日志记录指令。级别为(按重要性升序):跟踪、调试、信息、警告、错误和致命

这样的配置:

<logger name="com.sas">
    <priority value="WARN" />
    ....
</logger>
<appender name="developerLogs" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/LOGS/SAM/developerLogs.log" />
    <param name="Threshold" value="DEBUG" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

<appender name="sysAdminLogs" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/LOGS/SAM/sysAdminLogs.log" />
    <param name="Threshold" value="ERROR" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

<logger name="com.test">
    <priority value="DEBUG" />
    <appender-ref ref="developerLogs" />
    <appender-ref ref="sysAdminLogs" />
</logger>
告诉附加器仅接受错误重要性或以上的语句(即错误和致命)

那么“com.sas”的日志级别将设置为“DEBUG”或“ERROR”

在您的示例中,日志级别设置为DEBUG。附加程序编写的内容与问题是正交的

关于你的两个例子:

priority value=“DEBUG”和param name=“Threshold”value=“ERROR”

priority value=“ERROR”和param name=“Threshold”value=“DEBUG”

1。记录器优先级设置为DEBUG,而appender阈值设置为ERROR意味着记录器传递DEBUG、INFO、WARN、ERROR和FATAL,但appender只接受ERROR和FATAL,因此您只在日志中获取ERROR和FATAL

2.记录器优先级设置为ERROR,附加器阈值设置为DEBUG意味着记录器只传递ERROR和FATAL,而附加器接受DEBUG、INFO、WARN、ERROR和FATAL。您的日志中再次只会出现错误和致命错误

但这只是一个不幸的案例。混合使用优先级和阈值可以获得一些不错的功能。例如

。。。假设您刚刚将一个应用程序放置在暂存中,并且需要对其进行一段时间的监视,直到将其移动到生产环境中。您有一名开发人员和一名系统管理员进行监控。虽然开发人员需要所有日志,但系统管理员很忙,只想查看错误

您如何配置它?像这样的怎么样:

<logger name="com.sas">
    <priority value="WARN" />
    ....
</logger>
<appender name="developerLogs" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/LOGS/SAM/developerLogs.log" />
    <param name="Threshold" value="DEBUG" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

<appender name="sysAdminLogs" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/LOGS/SAM/sysAdminLogs.log" />
    <param name="Threshold" value="ERROR" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

<logger name="com.test">
    <priority value="DEBUG" />
    <appender-ref ref="developerLogs" />
    <appender-ref ref="sysAdminLogs" />
</logger>
您可以在sysAdminLogs.log
中看到:

some error statement
some fatal statement
some debug statement
some info statement
some warn statement
some error statement
some fatal statement
developerLogs.log
中:

some error statement
some fatal statement
some debug statement
some info statement
some warn statement
some error statement
some fatal statement
希望这个解释能更好地描述这些概念