这是一个独立的Java应用程序。
我正在使用下面的配置文件并遇到两个问题。
1)我收到了stdout的日志,我不知道为什么。
2)我在错误日志中收到所有日志消息,即使我试图仅将错误和更高的错误指向错误日志。
我正在使用BasicConfigurator而没有指定log4j.xml文件的显式路径。 xml文件与我的类在同一个jar中。除了这些问题之外,还在创建和写入相应的日志,因此正在应用配置。
3)另外,我没有运气在jar之外的log4j.xml文件,所以我可以在运行时更改它。我该怎么做?
<!--appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [%F:%L] - %m%n"/>
</layout>
</appender-->
<!-- working dir is $CATALINA_TMPDIR. send logs to log dir. -->
<appender name="ROLL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/var/log/company/application.log"/>
<param name="MaxFileSize" value="5MB"/>
<param name="MaxBackupIndex" value="9"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
</layout>
</appender>
<appender name="ERRORLOG" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/var/log/rocketvox/company/error.log"/>
<param name="MaxFileSize" value="5MB"/>
<param name="MaxBackupIndex" value="9"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
</layout>
</appender>
<category name="com.company">
<priority value="ALL"/>
<appender-ref ref="ROLL"/>
</category>
<category name="com.mattx">
<priority value="ALL"/>
<appender-ref ref="ROLL"/>
</category>
<root>
<priority value="error"/>
<appender-ref ref="ERRORLOG"/>
</root>
答案 0 :(得分:3)
将-Dlog4j.debug
添加到应用程序的JVM args,以确切了解log4j正在做什么以及它使用哪个配置文件。
您的问题是使用BasicConfigurer - 使用名为log4j.xml
的文件进行配置,您不需要在应用程序代码中使用任何显式的log4j配置程序,因为默认的log4j初始化逻辑将启动以选择log4j。从类路径中找到xml(或log4j.properties,如果没有找到xml)。
请参阅log4j手册中的Default Initialization Procedure。