Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS SDK for Java Protokollierung von Anrufen
Das AWS SDK for Java ist mit Apache Commons Logging
Unterstützte Protokollierungssysteme sind u. a. das Java Logging Framework und Apache Log4j. In diesem Thema erhalten Sie Informationen zur Nutzung von Log4j. Sie können die SDK Logging-Funktionalität von verwenden, ohne Änderungen an Ihrem Anwendungscode vorzunehmen.
Weitere Informationen über Log4j
Anmerkung
In diesem Thema geht es um Log4j 1.x. Log4j2 unterstützt Apache Commons Logging nicht direkt. Stattdessen wird ein Adapter bereitgestellt, der Protokollierungsaufrufe automatisch mithilfe der Apache Commons Logging-Schnittstelle an Log4j2 weiterleitet. Weitere Informationen finden Sie unter Commons Logging Bridge
Laden Sie das Log4J herunter JAR
Um Log4J mit dem zu verwendenSDK, müssen Sie Log4J von der Apache-Website JAR herunterladen. Das beinhaltet SDK nicht die. JAR Kopieren Sie die JAR Datei an einen Speicherort, der sich in Ihrem Klassenpfad befindet.
Log4j verwendet eine Konfigurationsdatei namens "log4j.properties". Beispiel-Konfigurationsdateien werden nachfolgend angezeigt. Kopieren Sie die Konfigurationsdatei in ein Verzeichnis in Ihrem Klassenpfad. Die Dateien Log4j JAR und log4j.properties müssen sich nicht im selben Verzeichnis befinden.
In der Konfigurationsdatei "log4j.properties" sind Eigenschaften wie die Protokollierungsebene
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
Festlegen des Klassenpfads
Sowohl die Datei Log4j als auch die Datei JAR log4j.properties müssen sich in Ihrem Klassenpfad befinden. Wenn Sie Apache Antpath
-Element der Ant-Datei fest. Das folgende Beispiel zeigt ein Pfadelement aus der Ant-Datei für das Beispiel, das in der enthalten ist. Amazon S3
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Wenn Sie Eclipse verwendenIDE, können Sie den Klassenpfad festlegen, indem Sie das Menü öffnen und zu Project | Properties | Java Build Path navigieren.
Service-spezifische Fehler und Warnungen
Wir empfehlen, die Logger-Hierarchie von „com.amazonaws“ immer auf "WARN" gesetzt zu lassen, um wichtige Nachrichten aus den Client-Bibliotheken abzufangen. Wenn der Amazon S3 Client beispielsweise feststellt, dass Ihre Anwendung nicht ordnungsgemäß geschlossen wurde InputStream
und möglicherweise Ressourcen verloren gehen, meldet der S3-Client dies in Form einer Warnmeldung an die Protokolle. Dadurch wird auch sichergestellt, dass Nachrichten protokolliert werden, wenn der Client Schwierigkeiten bei der Verarbeitung von Anforderungen oder Antworten hat.
In der folgenden log4j.properties-Datei wird der Wert rootLogger
auf gesetztWARN, wodurch Warn- und Fehlermeldungen von allen Loggern in der Hierarchie von „com.amazonaws“ aufgenommen werden. Alternativ können Sie den com.amazonaws-Logger explizit auf einstellen. WARN
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Or you can explicitly enable WARN and ERROR messages for the {AWS} Java clients log4j.logger.com.amazonaws=WARN
Protokollierung von Anforderungs-/Antwortübersichten
Jede Anfrage an AWS-Service generiert eine eindeutige AWS Anfrage-ID, die nützlich ist, wenn Sie auf ein Problem mit der Bearbeitung einer AWS-Service Anfrage stoßen. AWS Anfragen IDs sind programmgesteuert über Ausnahmeobjekte in der Datei SDK für jeden fehlgeschlagenen Serviceabruf zugänglich. Sie können auch über die DEBUG Protokollebene im Logger „com.amazonaws.request“ gemeldet werden.
Die folgende Datei log4j.properties ermöglicht eine Zusammenfassung der Anfragen und Antworten, einschließlich der Anfrage. AWS IDs
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Turn on DEBUG logging in com.amazonaws.request to log # a summary of requests/responses with {AWS} request IDs log4j.logger.com.amazonaws.request=DEBUG
Hier finden Sie ein Beispiel für die Protokollausgabe.
2009-12-17 09:53:04,269 [main] DEBUG com.amazonaws.request - Sending Request: POST https://rds.amazonaws.com / Parameters: (MaxRecords: 20, Action: DescribeEngineDefaultParameters, SignatureMethod: HmacSHA256, AWSAccessKeyId: ACCESSKEYID, Version: 2009-10-16, SignatureVersion: 2, Engine: mysql5.1, Timestamp: 2009-12-17T17:53:04.267Z, Signature: q963XH63Lcovl5Rr71APlzlye99rmWwT9DfuQaNznkD, ) 2009-12-17 09:53:04,464 [main] DEBUG com.amazonaws.request - Received successful response: 200, {AWS} Request ID: 694d1242-cee0-c85e-f31f-5dab1ea18bc6 2009-12-17 09:53:04,469 [main] DEBUG com.amazonaws.request - Sending Request: POST https://rds.amazonaws.com / Parameters: (ResetAllParameters: true, Action: ResetDBParameterGroup, SignatureMethod: HmacSHA256, DBParameterGroupName: java-integ-test-param-group-0000000000000, AWSAccessKeyId: ACCESSKEYID, Version: 2009-10-16, SignatureVersion: 2, Timestamp: 2009-12-17T17:53:04.467Z, Signature: 9WcgfPwTobvLVcpyhbrdN7P7l3uH0oviYQ4yZ+TQjsQ=, ) 2009-12-17 09:53:04,646 [main] DEBUG com.amazonaws.request - Received successful response: 200, {AWS} Request ID: 694d1242-cee0-c85e-f31f-5dab1ea18bc6
Verbose-Protokollierung des Netzwerkverkehrs
In einigen Fällen kann es nützlich sein, die genauen Anfragen und Antworten zu sehen, die der Sender AWS SDK for Java sendet und empfängt. Sie sollten diese Protokollierung in Produktionssystemen nicht aktivieren, da das Ausschreiben umfangreicher Anfragen (z. B. wenn eine Datei hochgeladen wird Amazon S3) oder Antworten eine Anwendung erheblich verlangsamen kann. Wenn Sie wirklich Zugriff auf diese Informationen benötigen, können Sie sie vorübergehend über den Apache HttpClient 4-Logger aktivieren. Wenn Sie den DEBUG Level auf dem org.apache.http.wire
Logger aktivieren, wird die Protokollierung aller Anfrage- und Antwortdaten aktiviert.
Die folgende Datei log4j.properties aktiviert die vollständige Protokollierung in Apache HttpClient 4 und sollte nur vorübergehend aktiviert werden, da dies erhebliche Auswirkungen auf die Leistung Ihrer Anwendung haben kann.
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Log all HTTP content (headers, parameters, content, etc) for # all requests and responses. Use caution with this since it can # be very expensive to log such verbose data! log4j.logger.org.apache.http.wire=DEBUG
Protokollieren von Latenz-Metriken
Wenn Sie bei der Behandlung Metriken anzeigen möchten, z. B. welcher Prozess die meiste Zeit beansprucht oder ob die Latenz auf der Server- oder Client-Seite größer ist, kann der Latenz-Protokollierer hilfreich sein. Stellen Sie den com.amazonaws.latency
Logger auf ein, um diesen Logger DEBUG zu aktivieren.
Anmerkung
Dieser Logger ist nur verfügbar, wenn SDK Metriken aktiviert sind. Weitere Informationen zum SDK Metrikpaket finden Sie unter Metriken aktivieren für AWS SDK for Java.
log4j.rootLogger=WARN, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n log4j.logger.com.amazonaws.latency=DEBUG
Hier finden Sie ein Beispiel für die Protokollausgabe.
com.amazonaws.latency - ServiceName=[{S3}], StatusCode=[200], ServiceEndpoint=[https://list-objects-integ-test-test.s3.amazonaws.com], RequestType=[ListObjectsV2Request], AWSRequestID=[REQUESTID], HttpClientPoolPendingCount=0, RetryCapacityConsumed=0, HttpClientPoolAvailableCount=0, RequestCount=1, HttpClientPoolLeasedCount=0, ResponseProcessingTime=[52.154], ClientExecuteTime=[487.041], HttpClientSendRequestTime=[192.931], HttpRequestTime=[431.652], RequestSigningTime=[0.357], CredentialsRequestTime=[0.011, 0.001], HttpClientReceiveResponseTime=[146.272]