use*_*816 4 java logging hadoop log4j jar
我做了一个使用log4j的应用程序.一切正常,但是,当我制作一个该应用程序的jar并将其附加到另一个应用程序时,日志记录停止工作(没有创建日志文件).我认为问题是这最后一个应用程序还包括已经使用log4j的另一个jar(除了我的).顺便说一句,这个另一个jar是hadoop,我认为它是采用日志上下文.我的log4j属性文件在classpath中,也在jar的根目录中:
log4j.logger.abc = DEBUG,A1
log4j.appender.A1 = org.apache.log4j.FileAppender log4j.appender.A1.File = my-log.log log4j.appender.A1.layout = org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern =%d {yy/MM/dd HH:mm:ss}%p%c {2}:%m%n
我该怎么做才能解决这个问题?
谢谢.
首先,我能想到的可能是HBase或Hadoop的log4j.properties正在影响资源目录中的log4j.properties文件,因为HBase 首先在类路径中使用它自己的log4j.properties文件.
在log4j.properties通过HBase的或Hadoop的使用,你可能没有你的" A1 "附加器一套可实际登录到" 我的-log.log "
其次,如果您没有PropertyConfigurator.configure(path to your customLog4j.properties);
在应用程序的开头使用log4j ,那么更有可能的是,HBase或Hadoop的log4j.properties正在被选中.
最后,如果您还没有尝试过PropertyConfigurator.configure()
,我建议进行实验的是将您的应用程序特定的log4j.properties文件重命名为mylog4j.properties,并尝试在PropertyConfigurator中使用它PropertyConfigurator.configure(mylog4j.properties);