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

文档资源.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 控制台

08/02/2013 18:03:15 com.ettrema.tutorial.milton.DocumentResource sendContent INFO: >>> 文件 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用于将内容记录到文件中(由 配置log4j.properties)。

当您的 SLF4 配置为登录到控制台时,系统的其余部分很可能正在使用 Log4J 的 API。

确保你slf4j-log4j12.jar的类路径中有,而不是slf4j-simple一个

于 2013-02-08T21:03:18.027 回答