WebSphere Portalにデプロイされたアプリケーション用に、次のlog4j.propertiesファイルがあります。
log4j.rootLogger=DEBUG, InfoAppender, DebugAppender
log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.Threshold=INFO
log4j.appender.InfoAppender.File=C:/info.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=C:/debug.log
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d %p [%c] - %m%n
コーディングするときは、クラスレベルでロガーを定義します。
private static Logger logger = Logger.getLogger(IWannaLogThis.class);
そして私はこれでINFOメッセージを記録します:
logger.info(theObjectToLog);
アプリケーションをデプロイすると、debug.log
ファイルはログに記録したものすべてを取得しますがlogger.debug()
、書き込みに使用したものはすべて無視しますlogger.info()
。反対側では、info.log
ファイルは空のままです。
最も奇妙なことはdebug.log
、info.log
クラスパスにあるいくつかのJARS(Hibernate Validatorなど)によって作成されたINFOメッセージとDEBUGメッセージが表示されますが、コードにログインしようとするすべてのものを無視することです。
何か案は?