AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-support
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS SDK for Java Panggilan Pencatatan
AWS SDK for Java Ini diinstrumentasi dengan Apache Commons Logging
Sistem logging yang didukung termasuk Java Logging Framework dan Apache Log4j, antara lain. Topik ini menunjukkan cara menggunakan Log4j. Anda dapat menggunakan fungsionalitas logging tanpa membuat perubahan apa pun pada kode aplikasi Anda. SDK
Untuk mempelajari lebih lanjut tentang Log4j
catatan
Topik ini berfokus pada Log4j 1.x. Log4j2 tidak secara langsung mendukung Apache Commons Logging, tetapi menyediakan adaptor yang mengarahkan panggilan logging secara otomatis ke Log4j2 menggunakan antarmuka Apache Commons Logging. Untuk informasi selengkapnya, lihat Commons Logging Bridge di dokumentasi
Unduh Log4J JAR
Untuk menggunakan Log4j denganSDK, Anda perlu mengunduh Log4j JAR dari situs web Apache. SDKTidak termasukJAR. Salin JAR file ke lokasi yang ada di classpath Anda.
Log4j menggunakan file konfigurasi, log4j.properties. Contoh file konfigurasi ditunjukkan di bawah ini. Salin file konfigurasi ini ke direktori di classpath Anda. File Log4j JAR dan log4j.properties tidak harus berada di direktori yang sama.
File konfigurasi log4j.properties menentukan properti seperti tingkat logging
-
log4j.logger.com.amazonaws
-
log4j.logger.org.apache.http.wire
Mengatur Classpath
Baik file Log4j JAR dan log4j.properties harus terletak di classpath Anda. Jika Anda menggunakan Apache Antpath
elemen dalam file Ant Anda. Contoh berikut menunjukkan elemen path dari file Ant untuk Amazon S3
contoh
<path id="aws.java.sdk.classpath"> <fileset dir="../../third-party" includes="**/*.jar"/> <fileset dir="../../lib" includes="**/*.jar"/> <pathelement location="."/> </path>
Jika Anda menggunakan EclipseIDE, Anda dapat mengatur classpath dengan membuka menu dan menavigasi ke Project | Properties | Java Build Path.
Kesalahan dan Peringatan Khusus Layanan
Kami menyarankan agar Anda selalu meninggalkan hirarki logger “com.amazonaws” yang disetel ke "" WARN untuk menangkap pesan penting apa pun dari pustaka klien. Misalnya, jika Amazon S3 klien mendeteksi bahwa aplikasi Anda belum menutup InputStream
dan dapat membocorkan sumber daya dengan benar, klien S3 melaporkannya melalui pesan peringatan ke log. Ini juga memastikan bahwa pesan dicatat jika klien memiliki masalah dalam menangani permintaan atau tanggapan.
File log4j.properties berikut menyetel rootLogger
keWARN, yang menyebabkan pesan peringatan dan kesalahan dari semua logger dalam hierarki “com.amazonaws” disertakan. Atau, Anda dapat secara eksplisit mengatur logger com.amazonaws ke. 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
Pencatatan Ringkasan Permintaan/Tanggapan
Setiap permintaan untuk AWS layanan menghasilkan ID AWS permintaan unik yang berguna jika Anda mengalami masalah dengan AWS layanan cara menangani permintaan. AWS permintaan dapat diakses IDs secara terprogram melalui objek Exception di SDK untuk panggilan layanan yang gagal, dan juga dapat dilaporkan melalui tingkat DEBUG log di logger “com.amazonaws.request”.
File log4j.properties berikut memungkinkan ringkasan permintaan dan tanggapan, termasuk permintaan. 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
Berikut adalah contoh dari output log.
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
Penebangan Kawat Verbose
Dalam beberapa kasus, akan berguna untuk melihat permintaan dan tanggapan yang tepat yang AWS SDK for Java dikirim dan diterima. Anda tidak boleh mengaktifkan pencatatan ini di sistem produksi karena menulis permintaan besar (misalnya, file yang diunggah Amazon S3) atau tanggapan dapat memperlambat aplikasi secara signifikan. Jika Anda benar-benar membutuhkan akses ke informasi ini, Anda dapat mengaktifkannya sementara melalui logger Apache HttpClient 4. Mengaktifkan DEBUG level pada org.apache.http.wire
logger memungkinkan pencatatan untuk semua data permintaan dan respons.
File log4j.properties berikut mengaktifkan full wire logging di Apache HttpClient 4 dan seharusnya hanya dihidupkan sementara karena dapat memiliki dampak kinerja yang signifikan pada aplikasi Anda.
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
Pencatatan Metrik Latensi
Jika Anda memecahkan masalah dan ingin melihat metrik seperti proses mana yang paling memakan waktu atau apakah sisi server atau klien memiliki latensi yang lebih besar, logger latensi dapat membantu. Setel com.amazonaws.latency
logger DEBUG untuk mengaktifkan logger ini.
catatan
Logger ini hanya tersedia jika SDK metrik diaktifkan. Untuk mempelajari lebih lanjut tentang paket SDK metrik, lihat Mengaktifkan Metrik untuk paket metrik. 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
Berikut adalah contoh dari output log.
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]