3

ApacheCommonsDigesterに何かをログに記録させるのに問題があります。誰もが放つことができるどんな光にも大いに感謝します。

私のコードでは、これを行っています:

Digester digester = new Digester();
// some Digester set up stuff

// What on earth should go in here????
digester.setLogger(LogFactory.getLog("org.apache.commons.logging.Log"));

commons-logging.propertiesクラスパスに次のようなファイルがあります。

org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
org.apache.commons.logging.simplelog.log.org.apache.commons.digester.Digester=debug
org.apache.commons.logging.simplelog.log.org.apache.commons.digester.Digester.sax=info

デバッグ情報がまったく表示されません。

ご協力いただきありがとうございます!

更新:答えをありがとうbwawok-それが問題でした。DigesterのドキュメントではSimpleLog、commons-loggingを有効にするだけでよいと提案されています。残念ながら、はDigesterINFOメッセージを出力しないようで、DEBUGのみを出力し、少なくともEclipseではSimpleLogDEBUGメッセージをまったく出力しません。その結果、INFOメッセージ(Digester送信しないため)とDEBUGメッセージ(SimpleLog転送されないため)はありませんでした。log4jに切り替えると、すべてのデバッグメッセージが出力されました。再度、感謝します。

4

1 に答える 1

2

コモンズロギングは使用しないことをお勧めします。Tomcat 5.5以降でうまく動作しないなど、いくつかの問題があります。

ライブラリではなく独自のアプリケーションを作成している場合は、Log4jに直接コーディングすることをお勧めします。http://logging.apache.org/log4j/1.2/manual.htmlでチュートリアルを読んでください。そのようなlog4j.propertiesファイルがあります

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

次に、アプリケーションで使用します

Logger logger = Logger.getLogger(MyClassName.class);
logger.info("Doing something I want to log at info... " );
logger.warn("Danger!");

代わりに、配布するライブラリ(ほとんどの人が当時コモンズロギングを使用していたもの)を作成している場合は、sl4jを調べてください。http://www.slf4j.org/。ほとんどのライブラリは、コモンズロギングの代わりにこれに切り替えています。

于 2010-05-05T02:05:51.987 に答える