AWS SDK for Java Panggilan Pencatatan - AWS SDK for Java 1.x

AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-supportpada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke AWS SDK for Java 2.xuntuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

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, yang merupakan lapisan abstraksi yang memungkinkan penggunaan salah satu dari beberapa sistem logging saat runtime.

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, lihat situs web Apache.

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 Log4j2.

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, di mana output logging dikirim (misalnya, ke file atau ke konsol), dan format output. Level logging adalah granularitas output yang dihasilkan logger. Log4j mendukung konsep beberapa hierarki logging. Level logging diatur secara independen untuk setiap hierarki. Dua hierarki logging berikut tersedia di AWS SDK for Java:

  • 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 Ant, atur classpath di path elemen dalam file Ant Anda. Contoh berikut menunjukkan elemen path dari file Ant untuk Amazon S3 contoh yang disertakan denganSDK.

<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]