Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Logging dengan SDK untuk Java 2.x
AWS SDK for Java 2.x Menggunakan SLF4J
Sistem logging yang didukung termasuk Java Logging Framework dan Apache Log4j 2
Log4j 2 berkas konfigurasi
Anda biasanya menggunakan file konfigurasi, dinamai log4j2.xml dengan Log4j 2. Contoh file konfigurasi ditunjukkan di bawah ini. Untuk mempelajari lebih lanjut tentang nilai yang digunakan dalam file konfigurasi, lihat manual untuk konfigurasi Log4j.
log4j2.xmlFile harus berada di classpath saat aplikasi Anda dimulai. Untuk proyek Maven, letakkan file di <project-dir>/src/main/resources direktori.
File log4j2.xml konfigurasi menentukan properti seperti tingkat loggingsoftware.amazon.awssdk.
Tambahkan ketergantungan logging
Untuk mengkonfigurasi pengikatan Log4j 2 untuk SLF4J di file build Anda, gunakan yang berikut ini.
Gunakan 2.20.0 untuk versi minimum log4j-slf4j2-impl artefak. Untuk versi terbaru, gunakan versi yang diterbitkan ke Maven centralVERSION dengan versi yang akan Anda gunakan.
SDK-specific kesalahan dan peringatan
Sebaiknya Anda selalu membiarkan hierarki logger “software.amazon.awssdk” diatur ke “WARN” untuk menangkap pesan penting dari pustaka klien SDK. Misalnya, jika klien Amazon S3 mendeteksi bahwa aplikasi Anda belum menutup sumber daya dengan benar InputStream dan dapat membocorkan sumber daya, klien S3 melaporkannya melalui pesan peringatan ke log. Ini juga memastikan bahwa pesan dicatat jika klien memiliki masalah dalam menangani permintaan atau tanggapan.
log4j2.xmlFile berikut menyetel rootLogger ke “WARN”, yang menyebabkan peringatan dan pesan tingkat kesalahan dari semua logger dalam aplikasi akan dikeluarkan, termasuk yang ada di hierarki “software.amazon.awssdk”. Atau, Anda dapat secara eksplisit mengatur hierarki logger “software.amazon.awssdk” ke “WARN” jika digunakan. <Root level="ERROR">
Contoh file Log4j2.xml konfigurasi
Konfigurasi ini akan mencatat pesan pada level “ERROR” dan “WARN” ke konsol untuk semua hierarki logger.
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="WARN"> <AppenderRef ref="ConsoleAppender"/> </Root> </Loggers> </Configuration>
Request/response pencatatan ringkasan
Setiap permintaan ke an Layanan AWS menghasilkan ID AWS permintaan unik yang berguna jika Anda mengalami masalah dengan cara menangani permintaan. Layanan AWS AWS
ID permintaan dapat diakses secara terprogram melalui SdkServiceException
log4j2.xmlFile berikut memungkinkan ringkasan permintaan dan tanggapan.
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="ERROR"> <AppenderRef ref="ConsoleAppender"/> </Root> <Logger name="software.amazon.awssdk" level="WARN" /> <Logger name="software.amazon.awssdk.request" level="DEBUG" /> </Loggers> </Configuration>
Berikut adalah contoh keluaran log:
2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=https, host=dynamodb.us-east-1.amazonaws.com, encodedPath=/, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent, X-Amz-Target], queryParameters=[]) 2022-09-23 16:02:08 [main] DEBUG software.amazon.awssdk.request:85 - Received successful response: 200, Request ID: QS9DUMME2NHEDH8TGT9N5V53OJVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: not available
Jika Anda tertarik hanya menggunakan ID permintaan<Logger
name="software.amazon.awssdk.requestId" level="DEBUG" />.
Debug-level Pencatatan SDK
Jika Anda memerlukan detail lebih lanjut tentang apa yang dilakukan SDK, Anda dapat mengatur tingkat logging software.amazon.awssdk logger keDEBUG. Pada level ini, SDK mengeluarkan sejumlah besar detail, jadi sebaiknya Anda mengatur level ini untuk menyelesaikan kesalahan menggunakan pengujian integrasi.
Pada tingkat logging ini, SDK mencatat informasi tentang konfigurasi, resolusi kredenSIAL, pencegat eksekusi, aktivitas TLS tingkat tinggi, penandatanganan permintaan, dan banyak lagi.
Berikut ini adalah contoh pernyataan yang dikeluarkan oleh SDK di DEBUG level untuk S3Client#listBuckets() panggilan.
DEBUG s.a.a.r.p.AwsRegionProviderChain:57 - Unable to load region from software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@324dcd31:Unable to load region from system settings. Region must be specified either via environment variable (AWS_REGION) or system property (aws.region). DEBUG s.a.a.c.i.h.l.ClasspathSdkHttpServiceProvider:85 - The HTTP implementation loaded is software.amazon.awssdk.http.apache.ApacheSdkHttpService@a23a01d DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@69b2f8e5, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@6331250e, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@a10c1b5, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@644abb8f, software.amazon.awssdk.services.s3.auth.scheme.internal.S3AuthSchemeInterceptor@1a411233, software.amazon.awssdk.services.s3.endpoints.internal.S3ResolveEndpointInterceptor@70325d20, software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa, software.amazon.awssdk.services.s3.internal.handlers.StreamingRequestInterceptor@4d847d32, software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor@5f462e3b, software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@3d7fa3ae, software.amazon.awssdk.services.s3.internal.handlers.DecodeUrlEncodedResponseInterceptor@58065f0c, software.amazon.awssdk.services.s3.internal.handlers.GetBucketPolicyInterceptor@3605c4d3, software.amazon.awssdk.services.s3.internal.handlers.S3ExpressChecksumInterceptor@585c13de, software.amazon.awssdk.services.s3.internal.handlers.AsyncChecksumValidationInterceptor@187eb9a8, software.amazon.awssdk.services.s3.internal.handlers.SyncChecksumValidationInterceptor@726a6b94, software.amazon.awssdk.services.s3.internal.handlers.EnableTrailingChecksumInterceptor@6ad11a56, software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor@522b2631, software.amazon.awssdk.services.s3.internal.handlers.GetObjectInterceptor@3ff57625, software.amazon.awssdk.services.s3.internal.handlers.CopySourceInterceptor@1ee29c84, software.amazon.awssdk.services.s3.internal.handlers.ObjectMetadataInterceptor@7c8326a4] DEBUG s.a.a.u.c.CachedSupplier:85 - (SsoOidcTokenProvider()) Cached value is stale and will be refreshed. ... DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@51351f28, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@21618fa7, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@15f2eda3, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@34cf294c, software.amazon.awssdk.services.sso.auth.scheme.internal.SsoAuthSchemeInterceptor@4d7aaca2, software.amazon.awssdk.services.sso.endpoints.internal.SsoResolveEndpointInterceptor@604b1e1d, software.amazon.awssdk.services.sso.endpoints.internal.SsoRequestSetEndpointInterceptor@62566842] ... DEBUG s.a.a.request:85 - Sending Request: DefaultSdkHttpFullRequest(httpMethod=GET, protocol=https, host=portal.sso.us-east-1.amazonaws.com, encodedPath=/federation/credentials, headers=[amz-sdk-invocation-id, User-Agent, x-amz-sso_bearer_token], queryParameters=[role_name, account_id]) DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: smithy.api#noAuth DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to portal.sso.us-east-1.amazonaws.com/18.235.195.183:443 with timeout 2000 ... DEBUG s.a.a.requestId:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available DEBUG s.a.a.request:85 - Received successful response: 200, Request ID: bb4f40f4-e920-4b5c-8648-58f26e7e08cd, Extended Request ID: not available DEBUG s.a.a.u.c.CachedSupplier:85 - (software.amazon.awssdk.services.sso.auth.SsoCredentialsProvider@b965857) Successfully refreshed cached value. Next Prefetch Time: 2024-04-25T22:03:10.097Z. Next Stale Time: 2024-04-25T22:05:30Z DEBUG s.a.a.c.i.ExecutionInterceptorChain:85 - Interceptor 'software.amazon.awssdk.services.s3.endpoints.internal.S3RequestSetEndpointInterceptor@7c2327fa' modified the message with its modifyHttpRequest method. ... DEBUG s.a.a.c.i.h.p.s.SigningStage:85 - Using SelectedAuthScheme: aws.auth#sigv4 ... DEBUG s.a.a.a.s.Aws4Signer:85 - AWS4 Canonical Request: GET ... DEBUG s.a.a.h.a.a.i.s.DefaultV4RequestSigner:85 - AWS4 String to sign: AWS4-HMAC-SHA256 20240425T210631Z 20240425/us-east-1/s3/aws4_request aafb7784627fa7a49584256cb746279751c48c2076f813259ef767ecce304d64 DEBUG s.a.a.h.a.i.c.SdkTlsSocketFactory:366 - Connecting socket to s3.us-east-1.amazonaws.com/52.217.41.86:443 with timeout 2000 ...
log4j2.xmlFile berikut mengonfigurasi output sebelumnya.
<Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%-5p %c{1.}:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level="WARN"> <AppenderRef ref="ConsoleAppender"/> </Root> <Logger name="software.amazon.awssdk" level="DEBUG" /> </Loggers> </Configuration>
Aktifkan pencatatan kawat
Akan berguna untuk melihat permintaan dan tanggapan yang tepat yang dikirim dan diterima SDK untuk Java 2.x. Jika Anda memerlukan akses ke informasi ini, Anda dapat mengaktifkannya sementara dengan menambahkan konfigurasi yang diperlukan tergantung pada klien HTTP yang digunakan klien layanan.
Secara default, klien layanan sinkron, seperti S3Client, menggunakan Apache yang mendasarinya HttpClient, dan klien
Berikut adalah rincian klien HTTP yang dapat Anda gunakan untuk dua kategori klien layanan:
| Klien HTTP Sinkron | Klien HTTP Asinkron |
|---|---|
| Apache5HttpClient |
NettyNioAsyncHttpClient |
| UrlConnectionHttpClient |
AwsCrtAsyncHttpClient |
| AwsCrtHttpClient |
|
| ApacheHttpClient |
Lihat tab yang sesuai di bawah ini untuk pengaturan konfigurasi yang perlu Anda tambahkan tergantung pada klien HTTP yang mendasarinya.
Awas
Kami menyarankan Anda hanya menggunakan pencatatan kawat untuk tujuan debugging. Nonaktifkan di lingkungan produksi Anda karena dapat mencatat data sensitif. Ini mencatat permintaan atau respons penuh tanpa enkripsi, bahkan untuk panggilan HTTPS. Untuk permintaan besar (misalnya, untuk mengunggah file ke Amazon S3) atau tanggapan, pencatatan kabel verbose juga dapat berdampak signifikan pada kinerja aplikasi Anda.