我是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到达此应用程序的任何内容。我知道它正在到达应用程序,因为如果我关闭应用程序,POSTer会在尝试POST时抛出“连接被拒绝”。
答案 0 :(得分:10)
我担心它不像将Jersey软件包添加到Log4J配置那么简单。泽西岛内部没有使用Log4J;相反,它使用Java logging。
如果您更喜欢使用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
来指定Jersey类的日志记录级别。
顺便说一句,我的建议 - 如果您只是为了快速和肮脏的调试而做 - 这是:
将调试器附加到您的应用程序(假设您有应用程序源代码);
或直接使用Java日志记录。要configure Java logging to output to a file,请将以下内容添加到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
答案 1 :(得分:5)
您可以先使用JUL to SLF4J Bridge
将其添加到类路径中。如果你使用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
答案 2 :(得分:0)
答案 3 :(得分:-5)
我无法登录工作,但我能够确定如何获取我需要的ContentType。我不得不把它添加到我的班级......
@Context
UriInfo uriInfo;
@PostConstruct
public void myfunc() {
if (uriInfo == null) { //breakpoint on this line, so I can see what uriInfo is
}
}