7

私はlog4jを初めて使用し、リソースが415 Media Type Not Supportedヘッダーを提供している理由をよりよく理解するためにlog4jを使用しようとしています。

私は以下を使用しています:

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

Log4J構成にJerseyパッケージを追加するほど簡単ではないのではないかと思います。ジャージーはLog4Jを内部的に使用していません。代わりに、Javaロギングを使用します。

Log4Jを使用する場合は、 SLF4JBridgeHandlerをロギングハンドラーとして使用するようにJavaロギングを構成することもできます。

通常、これは、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>

これらの行を静的初期化ブロックまたはメインメソッドに追加します。

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 に答える