Configuring logging
Pencatatan adalah mekanisme penting untuk memahami dan mengoperasikan NQRust-Identity. Hal ini seharusnya membantu Anda untuk memantau kesehatan NQRust-Identity, mendebug masalah, dan memelihara jejak audit dari peristiwa penting.
Anda dapat mengonfigurasi pencatatan untuk tingkat log akar atau untuk kategori yang lebih spesifik seperti org.hibernate atau org.keycloak.
Juga dimungkinkan untuk menyesuaikan tingkat log untuk setiap penangan log tertentu.
Di NQRust-Identity, pencatatan melampaui pengaturan tingkat log — Anda dapat mengarahkan output ke penangan yang berbeda, menggunakan pencatatan asinkron untuk performa, menangkap log akses HTTP, dan lainnya. Fitur-fitur ini membuatnya memungkinkan untuk menyesuaikan pencatatan dengan kebutuhan operasional Anda dan mengintegrasikan dengan platform observabilitas.
NQRust-Identity menggunakan kerangka kerja Pencarian NQRust di bawah hood.
Tersedianya penangan log
| Konsol Log ke output standar | File Menjaga log di disk | Syslog Mengirim log ke server Syslog |
Untuk mengaktifkan penangan log, masukkan perintah berikut:
bin/kc.[sh|bat] start --log="<handler1>,<handler2>"Tipe Log
Tabel berikut mendefinisikan tipe log yang tersedia.
| Tipe | Deskripsi |
|---|---|
| FATAL | Kegagalan krusial dengan kesulitan utuh dalam melayani permintaan apa pun. |
| ERROR | Kesalahan atau masalah yang signifikan yang mengakibatkan kesulitan dalam memproses permintaan. |
| WARN | Kesalahan atau masalah yang tidak krusial yang mungkin tidak memerlukan perbaikan segera. |
| INFO | Peristiwa siklus hidup NQRust-Identity atau informasi penting. Frekuensi rendah. |
| DEBUG | Informasi lebih detail untuk tujuan debugging, seperti log database. Frekuensi tinggi. |
| TRACE | Informasi debugging yang paling detail. Frekuensi sangat tinggi. |
| ALL | Tipe khusus untuk semua pesan log. |
| OFF | Tipe khusus untuk menonaktifkan logging sama sekali (tidak disarankan). |
Mengonfigurasi Tipe Log Root
Ketika tidak ada konfigurasi tipe log untuk logger kategori yang lebih spesifik, maka kategori yang membungkusnya digunakan. Ketika tidak ada kategori yang membungkusnya, tipe log logger root digunakan.
Untuk menetapkan tipe log root, masukkan perintah berikut:
bin/kc.[sh|bat] start --log-level=<root-level>Gunakan panduan berikut untuk perintah ini:
- Untuk
<root-level>, berikan tingkat yang didefinisikan dalam tabel sebelumnya. - Tipe log tidak sensitif terhadap huruf besar kecil. Misalnya, Anda bisa menggunakan
DEBUGataudebug. - Jika Anda secara tidak sengaja menetapkan tipe log dua kali, terjadinya terakhir dalam daftar menjadi tipe log. Misalnya, jika Anda memasukkan sintaks
--log-level="info,…,DEBUG,…", logger root akan menjadiDEBUG.
Mengonfigurasi Tipe Log Khusus Kategori
Anda dapat menetapkan tipe log yang berbeda untuk area tertentu di NQRust-Identity. Gunakan perintah ini untuk memberikan daftar koma-terpisah dari kategori yang ingin Anda berikan tipe log yang berbeda:
bin/kc.[sh|bat] start --log-level="<root-level>,<org.category1>:<org.category1-level>"Konfigurasi yang berlaku untuk kategori juga berlaku untuk sub-kategorinya kecuali jika Anda memasukkan sub-kategori yang lebih spesifik yang sesuai.
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug,org.hibernate.hql.internal.ast:info"Contoh ini menetapkan tipe log berikut:
- Tipe log root untuk semua logger diatur ke INFO.
- Tipe log umum hibernate diatur ke debug.
- Untuk mencegah struktur abstrak SQL dari menciptakan output log yangverbose, subkategori spesifik
org.hibernate.hql.internal.astdiatur ke info. Akibatnya, struktur abstrak SQL dilewatkan bukan muncul pada tingkatdebug.
Mengonfigurasi Tingkatan sebagai Opsi Individual
Saat mengonfigurasi tipe log khusus kategori, Anda juga dapat menetapkan tipe log sebagai opsi log-level-<category> individual daripada menggunakan opsi log-level untuk itu.
Ini berguna ketika Anda ingin menetapkan tipe log untuk kategori yang dipilih tanpa menimpa opsi log-level yang telah diatur sebelumnya.
Jika Anda memulai server sebagai:
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug"kemudian Anda dapat menetapkan variabel lingkungan KC_LOG_LEVEL_ORG_KEYCLOAK=trace untuk mengubah tingkat log untuk kategori org.keycloak.
Opsi log-level-<category> memiliki prioritas lebih tinggi dari log-level. Ini memungkinkan Anda untuk menimpa apa yang telah diatur dalam opsi log-level.
Misalnya jika Anda menetapkan KC_LOG_LEVEL_ORG_HIBERNATE=trace untuk contoh CLI di atas, kategori org.hibernate akan menggunakan tingkat trace bukan debug.
Perhatikan bahwa saat menggunakan variabel lingkungan, nama kategori harus dalam huruf besar dan titik harus diganti dengan garis miring. Saat menggunakan sumber konfigurasi lainnya, nama kategori harus ditentukan "sebagai adanya", misalnya:
bin/kc.[sh|bat] start --log-level="INFO,org.hibernate:debug" --log-level-org.keycloak=traceMenentukan Tipe Log untuk Setiap Penangan
Properti log-level menentukan tingkat root log global dan tingkatan untuk beberapa kategori yang dipilih.
Namun, pendekatan yang lebih halus untuk tingkat log diperlukan untuk memenuhi persyaratan aplikasi modern.
Untuk menetapkan tingkat log untuk penangan tertentu, properti dalam format log-<handler>-level (dimana <handler> adalah penangan log yang tersedia) telah diperkenalkan.
Ini berarti properti untuk pengaturan tingkat log terlihat seperti ini:
log-console-level- Penangan log konsollog-file-level- Penangan log filelog-syslog-level- Penangan log syslog
Properti log-<handler>-level hanya tersedia ketika penangan log tertentu diaktifkan. Informasi lebih lanjut dalam pengaturan penangan log di bawah ini.
Hanya tingkat log yang ditentukan dalam bagian Tipe Log yang diterima, dan harus dalam huruf kecil. Tidak ada dukungan untuk menentukan kategori tertentu untuk penangan log saat ini.
Prinsip Umum
Perlu dipahami bahwa menetapkan tingkat log untuk setiap penangan tertentu tidak menimpa tingkat root yang ditentukan dalam properti log-level.
Penangan log menghormati tingkat root log, yang mewakili tingkat keverbosean maksimum untuk seluruh sistem logging.
Ini berarti penangan log individu dapat dikonfigurasi untuk kurang verbose daripada logger root, tetapi tidak lebih.
Secara spesifik, ketika tingkat log sembarang ditetapkan untuk penangan, itu tidak berarti catatan log dengan tingkat log akan hadir dalam output.
Dalam hal ini, tingkat root log-level juga harus dinilai.
Tingkat log penangan menyediakan batas untuk tingkat root log, dan tingkat log default untuk penangan log adalah all - tanpa batasan apa pun.
Contoh
bin/kc.[sh|bat] start --log=console,file --log-level=debug --log-console-level=infoTingkat root log diatur ke debug, jadi setiap penangan log mewarisi nilai - begitu juga dengan penangan log file.
Untuk menyembunyikan catatan debug di konsol, kita perlu mengatur tingkat minimal (paling tidak parah) ke info untuk penangan konsol.
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug --log-console-level=warn --log-syslog-level=warnTingkat root harus diatur ke tingkat yang paling verbose yang diperlukan (debug dalam hal ini), dan penangan log lainnya harus diubah sesuai.
bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug,org.keycloak.events:trace, --log-syslog-level=trace --log-console-level=info --log-file-level=infoAgar dapat melihat org.keycloak.events:trace, tingkat trace harus diatur untuk penangan Syslog.
Menambahkan konteks untuk pesan log
Anda dapat mengaktifkan informasi konteks tambahan untuk setiap baris log seperti realm saat ini dan client yang sedang menjalankan permintaan.
Gunakan opsi log-mdc-enabled untuk mengaktifkannya.
bin/kc.[sh|bat] start --log-mdc-enabled=true2025-06-20 14:13:01,772 {kc.clientId=security-admin-console, kc.realmName=master} INFO ...Tentukan kunci yang akan ditambahkan dengan mengatur opsi konfigurasi log-mdc-keys.
Menggunakan format JSON yang berbeda untuk penangan log
Setiap penangan log menyediakan kemampuan untuk memiliki output log terstruktur dalam format JSON.
Hal ini dapat diaktifkan dengan properti dalam format log-<handler>-output=json (dimana <handler> adalah penangan log).
Jika Anda memerlukan format JSON yang berbeda dari yang dihasilkan, Anda dapat memanfaatkan format output JSON berikut:
default(default)ecs
Nilai ecs mengacu pada ECS (opens in a new tab) (Elastic Common Schema).
ECS adalah spesifikasi sumber terbuka, didorong komunitas yang menentukan serangkaian bidang yang digunakan dengan solusi Elastic. Spesifikasi ECS sedang digabungkan dengan OpenTelemetry Semantic Conventions (opens in a new tab) dengan tujuan menciptakan satu standar yang dipelihara oleh OpenTelemetry.
Untuk mengubah format output JSON, properti dalam format log-<handler>-json-format (dimana <handler> adalah penangan log) telah diperkenalkan:
log-console-json-format- Penangan log konsollog-file-json-format- Penangan log filelog-syslog-json-format- Penangan log syslog
Menyesuaikan bidang layanan
Saat menggunakan output log JSON, NQRust-Identity mencakup bidang service.name dan kemungkinan service.environment dalam entri log.
Secara default, service.name disetel ke keycloak, dan service.environment tidak disetel untuk format JSON default.
Untuk format ECS, service.environment disetel ke profil Quarkus (misalnya prod).
Anda dapat menyesuaikan bidang ini pada semua penangan log dengan menggunakan opsi berikut:
log-service-name- Atur bidangservice.name(default:keycloak)log-service-environment- Atur bidangservice.environment
Opsi ini berlaku untuk semua penangan log (console, file, dan syslog) yang memiliki output JSON yang diaktifkan.
bin/kc.[sh|bat] start --log-console-output=json --log-service-name=my-keycloak --log-service-environment=productionContoh
Jika Anda ingin memiliki log JSON dalam format ECS (Elastic Common Schema) untuk penangan log konsol, Anda dapat masukkan perintah berikut:
bin/kc.[sh|bat] start --log-console-output=json --log-console-json-format=ecs{"@timestamp":"2025-02-03T14:53:22.539484211+01:00","event.sequence":9608,"log.logger":"io.quarkus","log.level":"INFO","message":"Keycloak 999.0.0-SNAPSHOT on JVM (powered by Quarkus 3.17.8) started in 4.615s. Listening on: http://0.0.0.0:8080","process.thread.name":"main","process.thread.id":1,"mdc":{},"ndc":"","host.hostname":"host-name","process.name":"/usr/lib/jvm/jdk-21.0.3+9/bin/java","process.pid":77561,"data_stream.type":"logs","ecs.version":"1.12.2","service.environment":"prod","service.name":"Keycloak","service.version":"999.0.0-SNAPSHOT"}Pencacatan Asinkronis
NQRust-Identity mendukung pencacatan asinkronis, yang mungkin berguna untuk penyebaran yang memerlukan tingkat throughput tinggi dan latensi rendah. Pencacatan asinkronis menggunakan thread terpisah untuk menangani semua catatan log. Handler pencacatan dipanggil dengan cara yang persis sama seperti pencacatan sinkronis, hanya saja dilakukan di thread terpisah. Anda dapat mengaktifkan pencacatan asinkronis untuk semua handler log NQRust-Identity. Thread terpisah akan dibuat untuk setiap handler log dengan pencacatan asinkronis yang diaktifkan.
Mekanisme dasar untuk pencacatan asinkronis menggunakan antrian untuk memproses catatan log. Setiap catatan log baru ditambahkan ke antrian dan kemudian diterbitkan ke handler log tertentu dengan pencacatan asinkronis yang diaktifkan. Setiap handler log memiliki antrian yang berbeda.
Jika antrian sudah penuh, ia akan memblokir thread utama dan menunggu ruang bebas di antrian.
Kapan untuk menggunakan pencacatan asinkronis
- Anda memerlukan latensi lebih rendah untuk permintaan masuk
- Anda memerlukan throughput yang lebih tinggi
- Anda memiliki kolam thread pekerja kecil dan ingin membebaskan pencacatan ke thread terpisah
- Anda ingin mengurangi dampak dari handler log yang berat I/O
- Anda mencatat ke tujuan jarak jauh (misalnya, server syslog jaringan) dan ingin menghindari pemblokiran thread pekerja
Perhatikan bahwa mengaktifkan pencacatan asinkronis mungkin akan membawa overhead memori tambahan karena thread terpisah tambahan dan antrian internal. Dalam hal ini, tidak disarankan untuk menggunakannya di lingkungan yang terbatas sumber daya. Selain itu, shutdown server yang tidak terduga menciptakan risiko kehilangan catatan log.
Mengaktifkan pencacatan asinkronis
Anda dapat mengaktifkan pencacatan asinkronis secara global untuk semua handler log dengan menggunakan properti log-async sebagai berikut:
bin/kc.[sh|bat] start --log-async=trueAtau Anda dapat mengaktifkan pencacatan asinkronis untuk setiap handler tertentu dengan menggunakan properti dalam format log-<handler>-async (dimana <handler> adalah handler log).
Jika properti untuk handler tertentu tidak diatur, nilai dari induk log-async yang digunakan.
Anda dapat menggunakan properti ini sebagai berikut:
bin/kc.[sh|bat] start --log-console-async=true --log-file-async=true --log-syslog-async=truelog-console-async- Handler log konsollog-file-async- Handler log filelog-syslog-async- Handler log syslog
Mengubah panjang antrian
Anda dapat mengubah ukuran antrian yang digunakan untuk pencacatan asinkronis. Ukuran default adalah 512 catatan log di antrian.
Anda dapat mengubah panjang antrian sebagai berikut:
bin/kc.[sh|bat] start --log-console-async-queue-length=512 --log-file-async-queue-length=512 --log-syslog-async-queue-length=512Properti-properti ini hanya tersedia ketika pencacatan asinkronis diaktifkan untuk handler log tertentu.
Logging Akses HTTP
NQRust-Identity mendukung logging akses HTTP untuk mencatat detail dari permintaan HTTP yang masuk. Sementara log akses sering digunakan untuk debugging dan analisis lalu lintas, mereka juga penting untuk audit keamanan dan monitoring kompliansi, membantu administrator melacak pola akses, mengidentifikasi aktivitas mencurigakan, dan menjaga jejak audit.
Log ini ditulis pada level INFO, jadi pastikan konfigurasi logging Anda mencakup level ini — baik secara global (mis. log-level=info) atau secara spesifik untuk kategori log akses (mis. log-level=org.keycloak.http.access-log:info).
Ketika logging akses HTTP diaktifkan, mereka secara default ditampilkan, karena level INFO adalah level log default untuk NQRust-Identity.
Cara Mengaktifkan
Anda dapat mengaktifkan logging akses HTTP dengan menggunakan properti http-access-log-enabled sebagai berikut:
bin/kc.[sh|bat] start --http-access-log-enabled=trueMengubah format/pattern log
Anda dapat mengubah format/pattern catatan log akses dengan menggunakan properti http-access-log-pattern sebagai berikut:
bin/kc.[sh|bat] start --http-access-log-pattern=combinedPola yang diberi nama terdahulu:
common(default) - mencetak informasi dasar tentang permintaancombined- mencetak informasi dasar tentang permintaan + informasi tentang referer dan agen penggunalong- mencetak informasi komprehensif tentang permintaan dengan semua headernya
Bahkan Anda dapat menentukan pola Anda sendiri dengan data yang dibutuhkan untuk dilog, seperti:
bin/kc.[sh|bat] start --http-access-log-pattern='%A %{METHOD} %{REQUEST_URL} %{i,User-Agent}'Log akses HTTP mungkin berisi header HTTP sensitif seperti Authorization, Cookie, atau referensi kunci API eksternal. Header Authorization dan beberapa cookie sensitif yang dipilih secara otomatis dimasking dalam log akses HTTP. Namun, daftar item yang dimasking mungkin tidak lengkap. Hati-hati dengan menggunakan pola panjang atau mencetak header dengan format kustom - Anda harus menggunakannya hanya untuk tujuan pengembangan. Untuk memperluas daftar item yang dimasking, lihat di bawah.
Mohon kunjungi dokumentasi Quarkus (opens in a new tab) untuk daftar lengkap variabel yang dapat digunakan.
Masking header HTTP dan cookie tertentu
Header HTTP sensitif yang dipilih dan cookie dimasking secara otomatis dalam log akses HTTP.
Header HTTP sensitif yang dimask:
Authorization
Cookie NQRust-Identity sensitif yang dimask:
AUTH_SESSION_IDKC_AUTH_SESSION_HASHKEYCLOAK_IDENTITYKEYCLOAK_SESSIONAUTH_SESSION_ID_LEGACYKEYCLOAK_IDENTITY_LEGACYKEYCLOAK_SESSION_LEGACY
Untuk memperluas daftar item yang dimask (mis. untuk mengakomodasi header dan cookie yang digunakan oleh ekstensi kustom Anda), konfigurasikan opsi http-access-log-masked-headers dan http-access-log-masked-cookies.
bin/kc.[sh|bat] start --http-access-log-enabled=true --http-access-log-masked-headers=X-Custom,Y-Api-Token --http-access-log-masked-cookies=MY_COOKIE,MY_SECOND_COOKIEMengecualikan path URL tertentu
Dimungkinkan untuk mengecualikan path URL tertentu dari logging akses HTTP, sehingga mereka tidak akan tercatat.
Anda dapat menggunakan ekspresi regular untuk mengecualikannya, seperti:
bin/kc.[sh|bat] start --http-access-log-exclude='/realms/my-internal-realm/.*'Dalam hal ini, semua panggilan ke /realms/my-internal-realm/ dan path berikutnya akan dikecualikan dari log akses HTTP.
Log ke file terpisah dengan rotasi
Alih-alih menyimpan log akses HTTP dalam log server normal, Anda dapat menuliskannya ke file log terpisah. Ini membantu Anda memisahkan log akses HTTP dari log server dan menjaga jejak audit. Ketika logging ke file diaktifkan, log akses HTTP tidak ditulis ke konsol.
Mengaktifkan logging ke file
Anda dapat mengaktifkan logging ke file sebagai berikut:
bin/kc.[sh|bat] start --http-access-log-enabled=true --http-access-log-file-enabled=trueIni secara otomatis membuat file bernama keycloak-http-access.log dalam direktori /data/log distribusi Anda.
Mengubah nama file dan sufiks
Anda dapat mengubah nama file log menggunakan properti http-access-log-file-name.
Untuk mengubah sufiks file (.log adalah default), gunakan properti http-access-log-file-suffix.
Sebagai contoh, untuk menulis log akses HTTP ke file my-http-logs.txt:
bin/kc.[sh|bat] start --http-access-log-enabled=true --http-access-log-file-enabled=true --http-access-log-file-name=my-http-logs --http-access-log-file-suffix=txtRotasi file
Secara default, file log akses HTTP diputar setiap hari.
Ketika rotasi harian terjadi, sufiks berdasarkan tanggal '.{yyyy-MM-dd}' ditambahkan ke nama file log dari hari sebelumnya, menjaga log akses terpisah berdasarkan tanggal (misalnya, keycloak-http-access.2052-02-29.log).
Untuk menonaktifkan rotasi, gunakan konfigurasi berikut:
bin/kc.[sh|bat] start --http-access-log-enabled=true --http-access-log-file-enabled=true --http-access-log-file-rotate=falseEkspor Log Telemetri (OpenTelemetry)
Dimungkinkan untuk mengekspor log OpenTelemetry dari deployment Anda ke pengumpul OpenTelemetry untuk manajemen log terpusat.
Untuk detail lebih lanjut, lihat panduan Centralize your observability stack with OpenTelemetry.
Opsi yang Relevan
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
logAktifkan satu atau lebih handler log dalam daftar yang dipisahkan komma. CLI: --logEnv: KC_LOG | console, file, syslog | console |
log-asyncMenunjukkan apakah untuk logging secara asinkron ke semua handler. CLI: --log-asyncEnv: KC_LOG_ASYNC | true, false | false |
log-levelTingkat log dari kategori root atau daftar yang dipisahkan komma dari kategori individual dan tingkat mereka. Untuk kategori root, Anda tidak perlu menentukan kategori. CLI: --log-levelEnv: KC_LOG_LEVEL | Daftar | info |
log-level-<category>Tingkat log dari kategori. Menggantikan opsi log-level.CLI: --log-level-<category>Env: KC_LOG_LEVEL_<CATEGORY> | off, fatal, error, warn, info, debug, trace, all | |
log-service-environmentSet the service.<br/>environment field in JSON log entries for all log handlers. In ECS format, defaults to the Quarkus profile if not set.CLI: --log-service-environmentEnv: KC_LOG_SERVICE_ENVIRONMENT | String | |
log-service-nameSet the service.<br/>name field in JSON log entries for all log handlers.CLI: --log-service-nameEnv: KC_LOG_SERVICE_NAME | String | keycloak |
Konsol
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
log-console-asyncMenunjukkan apakah untuk logging secara asinkron ke konsol. Jika tidak diatur, nilai dari properti induk log-async digunakan.CLI: --log-console-asyncEnv: KC_LOG_CONSOLE_ASYNC | true, false | false |
log-console-async-queue-lengthPanjang antrian untuk digunakan sebelum flush writing saat logging ke konsol. CLI: --log-console-async-queue-lengthEnv: KC_LOG_CONSOLE_ASYNC_QUEUE_LENGTH | Integer | 512 |
log-console-colorAktifkan atau nonaktifkan warna saat logging ke konsol. Jika tidak ada, akan dibuat percobaan untuk menebak apakah terminal mendukung warna. CLI: --log-console-colorEnv: KC_LOG_CONSOLE_COLOR | true, false | |
log-console-formatFormat dari entri log konsol yang tidak terstruktur. Jika format memiliki spasi, escape nilai menggunakan "<format>". CLI: --log-console-formatEnv: KC_LOG_CONSOLE_FORMAT | String | %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n |
log-console-include-mdcSertakan informasi mdc dalam log konsol. Jika opsi log-console-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-console-include-mdcEnv: KC_LOG_CONSOLE_INCLUDE_MDC | true, false | true |
log-console-include-traceSertakan informasi tracing dalam log konsol. Jika opsi log-console-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-console-include-traceEnv: KC_LOG_CONSOLE_INCLUDE_TRACE | true, false | true |
log-console-json-formatSet the format of the produced JSON. CLI: --log-console-json-formatEnv: KC_LOG_CONSOLE_JSON_FORMAT | default, ecs | default |
log-console-levelSet the log level for the console handler. It specifies the most verbose log level for logs shown in the output. It respects levels specified in the log-level option, which represents the maximal verbosity for the whole logging system. For more information, check the Logging guide.CLI: --log-console-levelEnv: KC_LOG_CONSOLE_LEVEL | off, fatal, error, warn, info, debug, trace, all | all |
log-console-outputSet the log output to JSON or default (plain) unstructured logging. CLI: --log-console-outputEnv: KC_LOG_CONSOLE_OUTPUT | default, json | default |
Berkas
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
log-fileSet the log file path and filename. CLI: --log-fileEnv: KC_LOG_FILE | File | data/log/keycloak.log |
log-file-asyncMenunjukkan apakah untuk logging secara asinkron ke file log. Jika tidak diatur, nilai dari properti induk log-async digunakan.CLI: --log-file-asyncEnv: KC_LOG_FILE_ASYNC | true, false | false |
log-file-async-queue-lengthPanjang antrian untuk digunakan sebelum flush writing saat logging ke file log. CLI: --log-file-async-queue-lengthEnv: KC_LOG_FILE_ASYNC_QUEUE_LENGTH | Integer | 512 |
log-file-formatSet a format specific to file log entries. CLI: --log-file-formatEnv: KC_LOG_FILE_FORMAT | String | %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n |
log-file-include-mdcSertakan informasi MDC dalam file log. Jika opsi log-file-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-file-include-mdcEnv: KC_LOG_FILE_INCLUDE_MDC | true, false | true |
log-file-include-traceSertakan informasi tracing dalam file log. Jika opsi log-file-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-file-include-traceEnv: KC_LOG_FILE_INCLUDE_TRACE | true, false | true |
log-file-json-formatSet the format of the produced JSON. CLI: --log-file-json-formatEnv: KC_LOG_FILE_JSON_FORMAT | default, ecs | default |
log-file-levelSet the log level for the file handler. It specifies the most verbose log level for logs shown in the output. It respects levels specified in the log-level option, which represents the maximal verbosity for the whole logging system. For more information, check the Logging guide.CLI: --log-file-levelEnv: KC_LOG_FILE_LEVEL | off, fatal, error, warn, info, debug, trace, all | all |
log-file-outputSet the log output to JSON or default (plain) unstructured logging. CLI: --log-file-outputEnv: KC_LOG_FILE_OUTPUT | default, json | default |
log-file-rotation-enabledAktifkan rotasi file log. CLI: --log-file-rotation-enabledEnv: KC_LOG_FILE_ROTATION_ENABLED | true, false | true |
log-file-rotation-file-suffixSet the log file handler rotation file suffix. When used, the file will be rotated based on its suffix. Example: .yyyy-MM-dd to rotate daily. Note: If the suffix ends with .zip or .gz, the rotation file will also be compressed.CLI: --log-file-rotation-file-suffixEnv: KC_LOG_FILE_ROTATION_FILE_SUFFIX | String | |
log-file-rotation-max-backup-indexJumlah maksimum file log cadangan yang harus dijaga. CLI: --log-file-rotation-max-backup-indexEnv: KC_LOG_FILE_ROTATION_MAX_BACKUP_INDEX | Integer | 5 |
log-file-rotation-max-file-sizeUkuran file log maksimum, setelah itu rotasi dijalankan. Mendukung akhiran ukuran (misalnya 10M, 1G). CLI: --log-file-rotation-max-file-sizeEnv: KC_LOG_FILE_ROTATION_MAX_FILE_SIZE | String | 10M |
log-file-rotation-rotate-on-bootMenunjukkan apakah untuk rotasi file log saat server start. CLI: --log-file-rotation-rotate-on-bootEnv: KC_LOG_FILE_ROTATION_ROTATE_ON_BOOT | true, false | true |
Syslog
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
log-syslog-app-nameSet the app name used when formatting the message in RFC5424 format. CLI: --log-syslog-app-nameEnv: KC_LOG_SYSLOG_APP_NAME | String | keycloak |
log-syslog-asyncMenunjukkan apakah untuk logging secara asinkron ke Syslog. Jika tidak diatur, nilai dari properti induk log-async digunakan.CLI: --log-syslog-asyncEnv: KC_LOG_SYSLOG_ASYNC | true, false | false |
log-syslog-async-queue-lengthPanjang antrian untuk digunakan sebelum flush writing saat logging ke Syslog. CLI: --log-syslog-async-queue-lengthEnv: KC_LOG_SYSLOG_ASYNC_QUEUE_LENGTH | Integer | 512 |
log-syslog-counting-framingJika true, pesan yang dikirim diberi awalan dengan ukuran pesan. Jika protocol-dependent, nilai default adalah true saat log-syslog-protocol adalah tcp atau ssl-tcp, jika tidak false.CLI: --log-syslog-counting-framingEnv: KC_LOG_SYSLOG_COUNTING_FRAMING | true, false, protocol-dependent | protocol-dependent |
log-syslog-endpointSet the IP address and port of the Syslog server. CLI: --log-syslog-endpointEnv: KC_LOG_SYSLOG_ENDPOINT | String | localhost:514 |
log-syslog-formatSet a format specific to Syslog entries. CLI: --log-syslog-formatEnv: KC_LOG_SYSLOG_FORMAT | String | %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n |
log-syslog-include-mdcSertakan informasi MDC dalam Syslog. Jika opsi log-syslog-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-syslog-include-mdcEnv: KC_LOG_SYSLOG_INCLUDE_MDC | true, false | true |
log-syslog-include-traceSertakan informasi tracing dalam Syslog. Jika opsi log-syslog-format ditentukan, opsi ini tidak berpengaruh.CLI: --log-syslog-include-traceEnv: KC_LOG_SYSLOG_INCLUDE_TRACE | true, false | true |
log-syslog-json-formatSet the format of the produced JSON. CLI: --log-syslog-json-formatEnv: KC_LOG_SYSLOG_JSON_FORMAT | default, ecs | default |
log-syslog-levelSet the log level for the Syslog handler. It specifies the most verbose log level for logs shown in the output. It respects levels specified in the log-level option, which represents the maximal verbosity for the whole logging system. For more information, check the Logging guide.CLI: --log-syslog-levelEnv: KC_LOG_SYSLOG_LEVEL | off, fatal, error, warn, info, debug, trace, all | all |
log-syslog-max-lengthSet the maximum length, in bytes, of the message allowed to be sent. The length includes the header and the message. If not set, the default value is 2048 when log-syslog-type is rfc5424 (default) and 1024 when log-syslog-type is rfc3164.CLI: --log-syslog-max-lengthEnv: KC_LOG_SYSLOG_MAX_LENGTH | String | |
log-syslog-outputSet the Syslog output to JSON or default (plain) unstructured logging. CLI: --log-syslog-outputEnv: KC_LOG_SYSLOG_OUTPUT | default, json | default |
log-syslog-protocolSet the protocol used to connect to the Syslog server. CLI: --log-syslog-protocolEnv: KC_LOG_SYSLOG_PROTOCOL | tcp, udp, ssl-tcp | tcp |
log-syslog-typeSet the Syslog type used to format the sent message. CLI: --log-syslog-typeEnv: KC_LOG_SYSLOG_TYPE | rfc5424, rfc3164 | rfc5424 |
HTTP Access log
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
http-access-log-enabledJika HTTP access logging diaktifkan. Secara default, ini akan log record di konsol. CLI: --http-access-log-enabledEnv: KC_HTTP_ACCESS_LOG_ENABLED | true, false | false |
http-access-log-excludeEkspresi reguler yang dapat digunakan untuk mengecualikan beberapa path dari logging. Sebagai contoh, /realms/my-realm/.* akan mengecualikan semua endpoint berikutnya untuk realm my-realm dari log.CLI: --http-access-log-excludeEnv: KC_HTTP_ACCESS_LOG_EXCLUDE | String | |
http-access-log-file-enabledJika HTTP access logging harus dilakukan ke file terpisah. CLI: --http-access-log-file-enabledEnv: KC_HTTP_ACCESS_LOG_FILE_ENABLED | true, false | false |
http-access-log-file-nameNama dasar file log akses HTTP, yang akan membuat nama file log dengan menghitung dasar dan akhiran (e. g. keycloak-http-access.log). File berada di direktori /data/log distribusi.CLI: --http-access-log-file-nameEnv: KC_HTTP_ACCESS_LOG_FILE_NAME | String | keycloak-http-access |
http-access-log-file-rotateJika file log akses HTTP harus dirotate secara harian. CLI: --http-access-log-file-rotateEnv: KC_HTTP_ACCESS_LOG_FILE_ROTATE | true, false | true |
http-access-log-file-suffixAkhiranan file log akses HTTP. Ketika rotasi diaktifkan, akhiran berbasis tanggal .{yyyy-MM-dd} ditambahkan sebelum akhiran yang ditentukan. Jika beberapa rotasi terjadi pada hari yang sama, indeks bertambah akan dilampirkan ke tanggal.CLI: --http-access-log-file-suffixEnv: KC_HTTP_ACCESS_LOG_FILE_SUFFIX | String | .log |
http-access-log-masked-cookiesSet dari header HTTP Cookie yang nilainya harus dimask when the long pattern or %{ALL_REQUEST_HEADERS} format is enabled with the http-access-log-pattern option. Selected security sensitive cookies are always masked. CLI: --http-access-log-masked-cookiesEnv: KC_HTTP_ACCESS_LOG_MASKED_COOKIES | Daftar | |
http-access-log-masked-headersSet dari header HTTP yang nilainya harus dimask when the long pattern or %{ALL_REQUEST_HEADERS} format is enabled with the http-access-log-pattern option. Selected security sensitive headers are always masked. CLI: --http-access-log-masked-headersEnv: KC_HTTP_ACCESS_LOG_MASKED_HEADERS | Daftar | |
http-access-log-patternPola log akses HTTP. Anda dapat menggunakan format yang tersedia, atau gunakan format kustom yang dijelaskan dalam dokumentasi Quarkus. CLI: --http-access-log-patternEnv: KC_HTTP_ACCESS_LOG_PATTERN | common, combined, long, atau apapun | common |
Mapped Diagnostic Context (MDC)
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
log-mdc-enabledMenunjukkan apakah untuk menambahkan informasi tentang realm dan informasi lainnya ke mapped diagnostic context. Semua elemen akan diawali dengan kc.CLI: --log-mdc-enabledEnv: KC_LOG_MDC_ENABLED | true, false | false |
log-mdc-keysMenentukan informasi mana yang harus ditambahkan ke mapped diagnostic context sebagai daftar yang dipisahkan komma. CLI: --log-mdc-keysEnv: KC_LOG_MDC_KEYS | realmName, clientId, userId, ipAddress, org, sessionId, authenticationSessionId, authenticationTabId | realmName,clientId,org,sessionId,authenticationSessionId,authenticationTabId |
Telemetry Logs (OpenTelemetry)
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
telemetry-logs-enabledMengaktifkan ekspor log ke tujuan yang menangani log OpenTelemetry. CLI: --telemetry-logs-enabledEnv: KC_TELEMETRY_LOGS_ENABLED | true, false | false |
telemetry-logs-endpointOpenTelemetry endpoint untuk mengekspor log ke. Jika tidak diberikan, nilai diwarisi dari opsi telemetry-endpoint.CLI: --telemetry-logs-endpointEnv: KC_TELEMETRY_LOGS_ENDPOINT | String | |
telemetry-logs-header-<header>OpenTelemetry header yang akan menjadi bagian dari permintaan ekspor log (utama untuk memberikan header Autorisasi). Periksa dokumentasi untuk mengetahui cara mengatur variabel lingkungan untuk header yang berisi karakter khusus atau header sensitif besar kecil. CLI: --telemetry-logs-header-<header>Env: KC_TELEMETRY_LOGS_HEADER_<HEADER> | String | |
telemetry-logs-levelTingkat log yang paling verbose yang diekspor ke endpoint telemetry. Untuk informasi lebih lanjut, periksa panduan Telemetry. CLI: --telemetry-logs-levelEnv: KC_TELEMETRY_LOGS_LEVEL | off, fatal, error, warn, info, debug, trace, all | all |
telemetry-logs-protocolProtokol OpenTelemetry yang digunakan untuk mengekspor log. Jika tidak diberikan, nilai diwarisi dari opsi telemetry-protocol.CLI: --telemetry-logs-protocolEnv: KC_TELEMETRY_LOGS_PROTOCOL | grpc, http/protobuf |