3

Milton WebDAV API をテストしており、ドキュメントが開かれたときにログを記録する必要があります。Eclipse のコンソールにログを記録させることはできますが、外部ファイルにメッセージを出力させることはできません。

ここSOとGoogleでいくつかのリンクが見つかりましたが、どれも機能しませんでした。私はすでにこれに約4時間費やしました。推測はありますか?

状況は次のとおりです(できる限りフォーマットしようとしました):

log4j.properties

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=/home/paulo/workspace/MiltonTutorial/logs/log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=INFO, file

DocumentResource.java

public class DocumentResource implements GetableResource,
    PropFindableResource, DeletableResource, MoveableResource,
    CopyableResource, ReplaceableResource, PropPatchableResource, MultiNamespaceCustomPropertyResource {

    private final static Logger log = LoggerFactory.getLogger(DocumentResource.class);
    Document doc;

    (...)

    @Override
    public void sendContent(OutputStream out, Range arg1,
            Map<String, String> arg2, String arg3) throws IOException,
            NotAuthorizedException, BadRequestException {
        log.info(">>> File {} opened", doc.getFileName());

        out.write(this.doc.getContent());
    }

WebDAV クライアントで「get testfile」を実行したときの Eclipse のコンソール

2013/08/02 18:03:15 com.ettrema.tutorial.milton.DocumentResource sendContent 情報: >>> ファイル testfile が開かれました

ここにlog.txt の大きなコンテンツがあります

ありがとう!

4

2 に答える 2

1

log4j ファイルを次のように編集するだけです。

log4j.rootLogger=DEBUG, A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p %c %x - %m%n

log4j.appender.A2=org.apache.log4j.FileAppender  
log4j.appender.A2.File=/a.log  
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-5p %c %x - %m%n

log4j.logger.io.milton=TRACE

ロガー設定が適用されていない場合 (つまり、ファイルにログが表示されていない場合)、クラスパスのどこかに別の log4j.properties ファイルがあり、このファイルの代わりに使用されている可能性があります。場合によっては、jar ファイルに含めることができます (eek!)

于 2013-02-10T00:59:55.777 に答える
0

slf4jは他のロガーの単なるラッパーであり、log4jそのうちの1つは、ファイルにデータを記録するために使用されます(1つはによって構成されますlog4j.properties)。

SLF4がコンソールにログを記録するように構成されている間、システムの残りの部分はLog4JのAPIを使用している可能性があります。

1つでslf4j-log4j12.jarはなく、クラスパスにあることを確認してくださいslf4j-simple

于 2013-02-08T21:03:18.027 に答える