这是我的log4j.xml
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<!-- DAILY ROLLING -->
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="MaxFileSize" value="10240KB" />
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="10" />
<param name="ImmediateFlush" value="true" />
<param name="Append" value="true" />
<param name="File" value="/usr/local/xmld/log/xmld-core.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="XMLD2[%t] [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
</layout>
</appender>
<!-- SYSLOG -->
<appender name="syslog" class="org.apache.log4j.net.SyslogAppender">
<param name="syslogHost" value="${hostName}" />
<param name="facility" value="LOCAL6" />
<param name="facilityPrinting" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="XMLD2[%t] [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
</layout>
</appender>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="XMLD2[%t] ${hostName} [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
<!-- %d (%c{1})[%5p] %m%n -->
</layout>
</appender>
<!-- ====== Categories ===== -->
<!-- core -->
<logger name="com.my.xmldelivery2.core">
<level value="DEBUG" />
<appender-ref ref="syslog" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
<logger name="com.my.commons.utils">
<level value="DEBUG" />
<appender-ref ref="syslog" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
<!-- hibernate -->
<logger name="org.hibernate">
<level value="INFO" />
<appender-ref ref="syslog" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
<!-- Apache VFS2 -->
<logger name="org.apache.commons.vfs2">
<level value="INFO" />
<appender-ref ref="syslog" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</logger>
包com.my.commons.utils
是依赖关系,而com.my.xmldelivery2.core
是我的软件。这是maven install
之后生成的log4j.xml。
但是在控制台日志中,我看不到有关utils包的任何信息。包名称是正确的。我真的不明白我做错了什么。我不得不说最后两个包也用在前两个包中。
答案 0 :(得分:2)
试试这个:
1)添加root logger配置,所有日志事件都填充到root:
<root>
<level value="DEBUG" />
<appender-ref ref="syslog" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
2)删除所有DEBUG记录器配置
3)仅配置INFO级别。 DEBUG不会传递给根
<!-- hibernate -->
<logger name="org.hibernate">
<level value="INFO" />
</logger>
<!-- Apache VFS2 -->
<logger name="org.apache.commons.vfs2">
<level value="INFO" />
</logger>
答案 1 :(得分:1)
首先,如果com.my.commons.utils
包在依赖项中,您是否可以告诉确定该依赖项中的类是否使用类名称的记录器?如果com.my.commons.utils.MyClass
使用名为MyFancyLogger
的记录器,则不会打印任何内容。
因此,假设utils
包中的类遵循“记录器名称匹配类名”的做法:你的Log4J指令的任何似乎都有用吗?你确定你的log4j.xml
确实生效了吗?
无论如何,您可以使用-Dlog4j.debug=true
系统属性来确切了解幕后发生的事情。