检查正在运行的Java进程的log4j属性

时间:2014-02-14 08:05:05

标签: java logging log4j

我想知道是否有办法检查运行Java进程的log4j属性。我正面临着这个问题。我将配置设置为INFO级别并使用Rolling file appender。系统启动并正常运行一分钟,日志将转到相应的文件。但是突然它开始以DEBUG级别登录到Console,它不再进入File。很可能一些模块将Log4j属性重置为其他一些值。我尝试在Log4j属性Configurator上放几个方法。但它并没有多大帮助,因为我没有在适当的方法上打破。 任何线索都非常感谢。

我使用以下配置配置了log4j,但几秒后该配置似乎不再存在

log4j.rootLogger=INFO, A1,A2

log4j.appender.A1 = org.apache.log4j.RollingFileAppender
log4j.appender.A1.File = ${storm.home}/logs/${logfile.name}
log4j.appender.A1.Append = true
log4j.appender.A1.DatePattern = '.'yyy-MM-dd
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss:SSS} %c{1} [%p] %m%n

log4j.appender.A2=com.proptotype.poc.CustomAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %c{1} [%p] %m%n
log4j.appender.A2.myName=scribe
log4j.appender.A2.scribeHost=127.0.0.1
log4j.appender.A2.scribePort=1464

2 个答案:

答案 0 :(得分:1)

如果您使用的是Log4j 2,则可以使用JMX查询和修改当前的记录器配置。

它甚至还有一个小的Gui应用程序:http://logging.apache.org/log4j/2.x/manual/jmx.html#ClientGUI

答案 1 :(得分:1)

如果您想了解当前的日志级别,可以按照以下步骤进行操作。

System.out.println(Logger.getRootLogger().getLevel());

同样,您也可以从Logger类中找到其他属性,例如:

Enumeration enums = Logger.getRootLogger().getAllAppenders();
        while (enums.hasMoreElements()) {
            System.out.println(enums.nextElement().toString());
        }