我是新来的log4j,我试图用它来更好地理解为什么我的资源提供了一个415 Media Type Not Supported
标头。
我使用的是以下情况:
log4j.rootCategory=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n
log4j.category.com.sun.jersey=DEBUG,stdout
这似乎是它应该工作,但我深藏不露的有关POST到达该应用程序的控制台。 我知道,因为如果我能把一个程序关闭,海报抛出一个“连接被拒绝”尝试后当它到达应用。
恐怕这不是如添加泽西包你Log4J的配置那么简单。 泽西不使用Log4j内部; 而是使用Java记录 。
如果你喜欢用Log4J的工作那么你的选择是配置Java记录使用SLF4JBridgeHandler作为记录处理器。
典型地,这是通过指定记录属性经由JVM属性文件,以及添加处理程序的属性文件,像这样完成的:
指定日志记录属性文件
-Djava.util.logging.config.file=/path/to/logging.properties
添加SLF4JBridgeHandler
作为一个日志处理程序logging.properties
文件
handlers=org.slf4j.bridge.SLF4JBridgeHandler
那么SLF4J可以绑定到Log4J的,然后你可以使用你的log4j.properties
像往常一样去指定泽西类的日志记录级别。
顺便说一句,我的建议 - 如果你只是在做这个快速和肮脏的调试会 - 是要么:
调试器附加到应用程序中(假设你的应用程序源代码);
或使用Java直接登录工作。 要配置Java日志输出到文件中 ,添加以下到您的logging.properties
正如前面指定的文件-
com.sun.jersey.level=DEBUG com.sun.jersey.handlers=java.util.logging.FileHandler java.util.logging.FileHandler.pattern=/path/to/debugging.log java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
您可以使用JUL to SLF4J Bridge
的这第一个把它添加到你的classpath。 你可以,如果你正在使用maven使用:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.5</version>
</dependency>
添加这些行到一个静态初始化块或在您的主要方法:
LogManager.getLogManager().reset();
SLF4JBridgeHandler.install();
现在,您可以控制从你的球衣日志log4j.properties
文件:
log4j.category.org.glassfish.jersey=WARN,stdout
我无法登录到工作,但我能够确定如何获得的ContentType这正是我需要的。 我不得不把它添加到我的课...
@Context
UriInfo uriInfo;
@PostConstruct
public void myfunc() {
if (uriInfo == null) { //breakpoint on this line, so I can see what uriInfo is
}
}