我正在测试 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: >>> File testfile opened
log.txt大内容here
谢谢!
最佳答案
只需将您的 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 文件中(哎呀!)
关于java - slf4j 登录控制台而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780886/