AWS SDKログ出力をリダイレクトする方法

piotr:

ログバックを使用して構成しているにもかかわらず、STDOUTでそれらを取得し続けます。コンソールからAWSを取り出すことができません。

Jun 19, 2014 3:46:40 PM com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Unable to execute HTTP request: The target server failed to respond
org.apache.http.NoHttpResponseException: The target server failed to respond
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:95)
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62)
        at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
        at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
        at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)  
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)   
        at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
        at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:66)
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
        at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:713)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:518)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:402)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:245)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3573)
        at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:990)
        at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:970)
        at com.here.prime.cdtfilter.S3MapStore$$anonfun$1.apply(S3MapStore.scala:49)
        at com.here.prime.cdtfilter.S3MapStore$$anonfun$1.apply(S3MapStore.scala:48)
        at com.here.prime.utils.Utils$.retry(Utils.scala:26)

これは私のログバック設定です:

<configuration debug="false" scan="true" scanPeriod="30 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>cdtxfilter.log</file>
        <append>true</append>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.amazonaws.request" level="WARN">
    </logger>

    <root level="DEBUG">
        <!--<appender-ref ref="STDOUT" />-->
        <appender-ref ref="FILE" />
    </root>
</configuration>

解決:

commons-loggingの代わりに、logbackを介してロギングを強制します。

build.sbtに追加:

resolvers ++= Seq(
  "version99 Empty loggers" at "http://version99.qos.ch",
)

libraryDependencies ++= Seq(
  "org.slf4j" % "jcl-over-slf4j" % "1.7.7",
  "commons-logging" % "commons-logging" % "99-empty",
  "ch.qos.logback" % "logback-classic" % "1.0.13",
)

logback.xmlで、AWS SDK内のノイズの多いクラスのログレベルを微調整します。

<configuration...
[..]
    <logger name="com.amazonaws" level="ERROR"/>
    <logger name="org.apache.http" level="INFO" />
</configuration>
ユージーン・ロイ:

まずお伝えしたいのは、歴史的な理由により、Javaへのログインはごちゃごちゃしていて、正しくするために少し努力する準備ができている必要があるということです。

さて、あなたの問題に。

まず第一に、STDOUTバイパスログバックで取得しているログのように見えます(少なくとも、ログバック構成で定義されているパターンには従いません)。

その理由は2つあります。

  1. 可能性が低い何らかの方法でlogbackを誤って構成しました(logbackを構成したファイルにログエントリが最終的に書き込まれるかどうかを確認して、これを確認してください)。

  2. AWS sdkからのログは、コモンズロギング(これはAWS sdkで使用されるロギングシステムであるため)か、コモンズロギングを模倣してログをSLF4Jなどにリダイレクトするもの(可能性が低いため、明示的な必要があるため)クラスパスの構成)。

これに対処するには、この記事から始めて、Javaのロギング動物園の概要を理解することをお勧めします

次に、問題を解決するために、一般的なロギングシステム(commons logging、log4jなど)を構成して、ログをSLF4jに送信し、logbackをSLF4j実装として使用することをお勧めします。

これこれを読んで(Mavenを使用している場合は、ビルドシステムに関連するjclとlog4jを除外する方法を見つけてください)、クラスパスに何を入れるべきか、何を入れるべきでないかを理解してください。

私のプロジェクトの1つはAWS SDKを使用しており、上記のようにログが設定されています。

私の場合、pom.xml次のように依存関係を設定します。

...

<repositories>
    <repository>
        <id>version99</id>
        <url>http://version99.qos.ch/</url>
    </repository>
</repositories>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>99-empty</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>99-empty</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.7</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>1.7.7</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.7</version>
    </dependency>

    ...

</dependencies>

...

...そしてまた私のクラスパスで私はlogback.xmlこのようにしています:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs.log</file>
    <append>false</append>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<root level="debug">
    <appender-ref ref="FILE" />
</root>

...そして、すべてのログが最終的に私のログファイルに書き込まれます。

これにより、依存関係/ログの構成方法に関するアイデアが得られます。

コメントで不明確な瞬間を明確にしてください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AWS CloudFrontでURLをリダイレクトする方法は?

分類Dev

AWS Java SDKでリクエストレベルのロギングを無効にする方法は?

分類Dev

AWSロードバランサーを使用してすべてのリクエストを1つのドメインにリダイレクトする方法

分類Dev

スカラ/プレイプロジェクトにAWS Java SDKを追加する方法

分類Dev

AWSでSQSにリダイレクトするときにIoTトピックを取得する方法

分類Dev

AWS CloudFormationアプリケーションロードバランサー-HTTPリスナーをHTTPSリスナーにリダイレクトする方法は?

分類Dev

AWS Route53でwww以外のdomain.comをwwwdomain.com(WordPressブログ)にリダイレクトするにはどうすればよいですか?

分類Dev

AWSクラウドフロントログをほぼリアルタイムで確認する方法

分類Dev

AWS:httpswwwをhttpsnon-wwwにリダイレクトします

分類Dev

AWS Cognito Userpool トークンを使用して AWS Api ゲートウェイにログインする方法は?

分類Dev

AWS CertificateManagerによって管理されるNginxIngress Controller、AWS NLB、およびTLS証明書を使用してHTTPをHTTPSにリダイレクトする方法は?

分類Dev

react jsプロジェクトでnpmを使用してaws-sdkの最新バージョンに更新/アップグレードする方法は?

分類Dev

aws centos 7 wordpressapacheリダイレクト

分類Dev

TravisデプロイスクリプトでAWS構成を実行する方法

分類Dev

Pitest:ログ出力をファイルにリダイレクトする方法は?

分類Dev

Route 53 を使用して AWS でホストされている HTTPS ドメインをリダイレクトする方法は?

分類Dev

AWSのサブドメインにIPアドレスをリダイレクトする

分類Dev

S3バケットにリダイレクトするAWS Cloudfront

分類Dev

S3バケットにリダイレクトするAWS Cloudfront

分類Dev

S3バケットにリダイレクトするAWS Cloudfront

分類Dev

AWS S3のバケットルートからサブディレクトリにリダイレクトする方法は?

分類Dev

AWSは.net、.co.uk、.orgを.comにリダイレクトします

分類Dev

AWS SDK forjavascriptでリアクティブプログラミングRXJSを使用する

分類Dev

AWS CloudWatchInsightsを使用してAWSCloudWatchログをクエリする方法は?

分類Dev

AWS認証情報プロバイダーからセキュリティトークンを取得する

分類Dev

ノード/エクスプレスアプリケーションをAWSにデプロイする方法

分類Dev

リクエストボディ変数/アイテムに応じて異なるawsラムダを実行する方法(aws apiゲートウェイ)

分類Dev

awsログをリアルタイムで表示する方法(tail -fなど)

分類Dev

AWS Opsworks:アプリに特定のgitタグをデプロイする方法は?

Related 関連記事

  1. 1

    AWS CloudFrontでURLをリダイレクトする方法は?

  2. 2

    AWS Java SDKでリクエストレベルのロギングを無効にする方法は?

  3. 3

    AWSロードバランサーを使用してすべてのリクエストを1つのドメインにリダイレクトする方法

  4. 4

    スカラ/プレイプロジェクトにAWS Java SDKを追加する方法

  5. 5

    AWSでSQSにリダイレクトするときにIoTトピックを取得する方法

  6. 6

    AWS CloudFormationアプリケーションロードバランサー-HTTPリスナーをHTTPSリスナーにリダイレクトする方法は?

  7. 7

    AWS Route53でwww以外のdomain.comをwwwdomain.com(WordPressブログ)にリダイレクトするにはどうすればよいですか?

  8. 8

    AWSクラウドフロントログをほぼリアルタイムで確認する方法

  9. 9

    AWS:httpswwwをhttpsnon-wwwにリダイレクトします

  10. 10

    AWS Cognito Userpool トークンを使用して AWS Api ゲートウェイにログインする方法は?

  11. 11

    AWS CertificateManagerによって管理されるNginxIngress Controller、AWS NLB、およびTLS証明書を使用してHTTPをHTTPSにリダイレクトする方法は?

  12. 12

    react jsプロジェクトでnpmを使用してaws-sdkの最新バージョンに更新/アップグレードする方法は?

  13. 13

    aws centos 7 wordpressapacheリダイレクト

  14. 14

    TravisデプロイスクリプトでAWS構成を実行する方法

  15. 15

    Pitest:ログ出力をファイルにリダイレクトする方法は?

  16. 16

    Route 53 を使用して AWS でホストされている HTTPS ドメインをリダイレクトする方法は?

  17. 17

    AWSのサブドメインにIPアドレスをリダイレクトする

  18. 18

    S3バケットにリダイレクトするAWS Cloudfront

  19. 19

    S3バケットにリダイレクトするAWS Cloudfront

  20. 20

    S3バケットにリダイレクトするAWS Cloudfront

  21. 21

    AWS S3のバケットルートからサブディレクトリにリダイレクトする方法は?

  22. 22

    AWSは.net、.co.uk、.orgを.comにリダイレクトします

  23. 23

    AWS SDK forjavascriptでリアクティブプログラミングRXJSを使用する

  24. 24

    AWS CloudWatchInsightsを使用してAWSCloudWatchログをクエリする方法は?

  25. 25

    AWS認証情報プロバイダーからセキュリティトークンを取得する

  26. 26

    ノード/エクスプレスアプリケーションをAWSにデプロイする方法

  27. 27

    リクエストボディ変数/アイテムに応じて異なるawsラムダを実行する方法(aws apiゲートウェイ)

  28. 28

    awsログをリアルタイムで表示する方法(tail -fなど)

  29. 29

    AWS Opsworks:アプリに特定のgitタグをデプロイする方法は?

ホットタグ

アーカイブ