

Die Version AWS SDK für Java 1.x wurde end-of-support am 31. Dezember 2025 erreicht. Wir empfehlen Ihnen, auf den zu migrieren [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html), um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

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 für Java Protokollierung von Anrufen
<a name="java-dg-logging"></a>

Das AWS SDK für Java ist mit [Apache Commons Logging](http://commons.apache.org/proper/commons-logging/guide.html) instrumentiert, einer Abstraktionsschicht, die die Verwendung eines von mehreren Logging-Systemen zur Laufzeit ermöglicht.

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 Protokollierungsfunktionalität des SDKs ohne Änderungen am Code Ihrer Anwendung nutzen.

Weitere Informationen über [Log4j](http://logging.apache.org/log4j/2.x/) finden Sie auf der [Apache-Website](http://www.apache.org/).

**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](https://logging.apache.org/log4j/2.x/log4j-jcl.html) in der Log4j2-Dokumentation.

## Herunterladen der Log4J-JAR
<a name="download-the-log4j-jar"></a>

Zur Nutzung von Log4j mit dem SDK müssen Sie das Log4j-JAR von der Apache-Website herunterladen. Das SDK enthält das JAR nicht. Kopieren Sie die JAR-Datei an einen Speicherort, der in Ihrem Klassenpfad enthalten ist.

Log4j verwendet eine Konfigurationsdatei namens "log4j.properties". Beispiel-Konfigurationsdateien werden nachfolgend angezeigt. Kopieren Sie die Konfigurationsdatei in ein Verzeichnis in Ihrem Klassenpfad. Die Log4j JAR-Dateien und die Datei "log4j.properties" müssen nicht im selben Verzeichnis liegen.

In der Konfigurationsdatei "log4j.properties" sind Eigenschaften wie die [Protokollierungsebene](http://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers), das Ziel der Protokollierungsausgaben (z. B. [an eine Datei oder an die Konsole](http://logging.apache.org/log4j/2.x/manual/appenders.html)) sowie das [Ausgabeformat](http://logging.apache.org/log4j/2.x/manual/layouts.html) angegeben. Die Protokollierungsebene ist die Granularität der Ausgaben, die der Protokollierer erzeugt. Log4j unterstützt das Konzept mehrerer *Hierarchien* der Protokollierung. Die Protokollierungsebene wird für jede Hierarchie separat festgelegt. Die folgenden zwei Protokollierungshierarchien sind im AWS SDK für Java verfügbar:
+ log4j.logger.com.amazonaws
+ log4j.logger.org.apache.http.wire

## Festlegen des Klassenpfads
<a name="sdk-net-logging-classpath"></a>

Sowohl die Log4j JAR-Datei als auch die Datei "log4j.properties" müssen in Ihrem Klassenpfad liegen. Wenn Sie [Apache Ant](http://ant.apache.org/manual/) verwenden, legen Sie den Klassenpfad im `path`-Element der Ant-Datei fest. Das folgende Beispiel zeigt ein Pfadelement aus der Ant-Datei für das im Amazon S3 [SDK enthaltene Beispiel](https://github.com/aws/aws-sdk-java/blob/master/src/samples/AmazonS3/build.xml).

```
<path id="aws.java.sdk.classpath">
  <fileset dir="../../third-party" includes="**/*.jar"/>
  <fileset dir="../../lib" includes="**/*.jar"/>
  <pathelement location="."/>
</path>
```

In der Eclipse-IDE können Sie den Klassenpfad festlegen, indem Sie das Menü öffnen und auf **Projekt** \$1 **Eigenschaften** \$1 **Java Build-Pfad** klicken.

## Service-spezifische Fehler und Warnungen
<a name="sdk-net-logging-service"></a>

Wir empfehlen, dass Sie die Protokollierungshierarchie "com.amazonaws" immer auf "WARN" gestellt lassen. So entgehen Ihnen keine wichtigen Meldungen aus den Client-Bibliotheken. 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 ist der `rootLogger` auf WARN gesetzt. Dies hat zur Folge, dass Warn- und Fehlermeldungen von allen Protokollierern in der Hierarchie "com.amazonaws" enthalten sind. Alternativ können Sie ausdrücklich den com.amazonaws-Protokollierer auf WARN stellen.

```
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
<a name="sdk-net-logging-request-response"></a>

Jede Anfrage an AWS-Service generiert eine eindeutige AWS Anforderungs-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 im 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
<a name="sdk-net-logging-verbose"></a>

In einigen Fällen kann es nützlich sein, die genauen Anfragen und Antworten zu sehen, die der Sender AWS SDK für 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. Durch Aktivieren der DEBUG-Ebene für den `org.apache.http.wire`-Protokollierer wird die Protokollierung für sämtliche Anforderungs- 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
<a name="sdk-latency-logging"></a>

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`-Protokollierer zur Aktivierung auf DEBUG.

**Anmerkung**  
Dieser Protokollierer ist nur verfügbar, wenn SDK-Metriken aktiviert sind. Weitere Informationen zum SDK-Metrikpaket finden Sie unter [Metriken aktivieren für](generating-sdk-metrics.md). AWS SDK für 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]
```