7

我是 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 时会抛出“连接被拒绝”。

4

4 回答 4

10

恐怕这不像将 Jersey 包添加到 Log4J 配置那么简单。Jersey 内部不使用 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像往常一样使用您的来指定 Jersey 类的日志记录级别。

顺便说一句,我的建议——如果你只是为了快速调试而这样做——是:

  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
于 2013-03-15T16:51:03.740 回答
6

您可以JUL to SLF4J Bridge为此首先将其添加到您的类路径中。如果您使用的是 maven,则可以使用它:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>1.7.5</version>
</dependency>

将这些行添加到静态初始化程序块或 main 方法中:

LogManager.getLogManager().reset();
SLF4JBridgeHandler.install();

现在您可以从log4j.properties文件中控制球衣日志:

log4j.category.org.glassfish.jersey=WARN,stdout
于 2014-09-04T12:56:46.640 回答
0

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

  • web.xml
  • log4j.properties
  • Log4JInitServlet.java
  • Log4JTestServlet.java
于 2013-04-18T11:15:14.010 回答
-5

我无法让日志记录工作,但我能够确定如何获得我需要的 ContentType。我不得不把这个添加到我的课堂上......

@Context
UriInfo uriInfo;

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

    }
}
于 2013-03-15T17:24:04.060 回答