如何使用log4j的,看看到新泽西(How to use log4j to see into Jer

2019-08-17 15:40发布

我是新来的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到达该应用程序的控制台。 我知道,因为如果我能把一个程序关闭,海报抛出一个“连接被拒绝”尝试后当它到达应用。

Answer 1:

恐怕这不是如添加泽西包你Log4J的配置那么简单。 泽西不使用Log4j内部; 而是使用Java记录 。

如果你喜欢用Log4J的工作那么你的选择是配置Java记录使用SLF4JBridgeHandler作为记录处理器。

典型地,这是通过指定记录属性经由JVM属性文件,以及添加处理程序的属性文件,像这样完成的:

  1. 指定日志记录属性文件

    -Djava.util.logging.config.file=/path/to/logging.properties

  2. 添加SLF4JBridgeHandler作为一个日志处理程序logging.properties文件

     handlers=org.slf4j.bridge.SLF4JBridgeHandler 

那么SLF4J可以绑定到Log4J的,然后你可以使用你的log4j.properties像往常一样去指定泽西类的日志记录级别。

顺便说一句,我的建议 - 如果你只是在做这个快速和肮脏的调试会 - 是要么:

  1. 调试器附加到应用程序中(假设你的应用程序源代码);

  2. 或使用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 


Answer 2:

您可以使用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


Answer 3:

你可以看到在这里它的运行必须配置

  • web.xml中
  • log4j.properties
  • Log4JInitServlet.java
  • Log4JTestServlet.java


Answer 4:

我无法登录到工作,但我能够确定如何获得的ContentType这正是我需要的。 我不得不把它添加到我的课...

@Context
UriInfo uriInfo;

@PostConstruct
public void myfunc() {
    if (uriInfo == null) { //breakpoint on this line, so I can see what uriInfo is

    }
}


文章来源: How to use log4j to see into Jersey