ApsaraMQ for RocketMQ'da mesaj teslimi hatalarını veya tüketici gecikmesini giderirken istemci günlükleri birincil tanılama aracınızdır. Java SDK, çalışma zamanı özel durumlarını, bağlantı olaylarını ve mesaj yaşam döngüsü ayrıntılarını yakalayan günlük dosyalarını otomatik olarak oluşturur.
En son RocketMQ 5.x SDK'larını kullanmanızı öneririz. Bu SDK'lar, ApsaraMQ for RocketMQ 5.x broker'larıyla tam uyumludur ve daha fazla işlev ile geliştirilmiş özellikler sunar. Daha fazla bilgi için bkz. Java SDK sürüm kılavuzu.
Alibaba Cloud yalnızca RocketMQ 3.x, 4.x ve TCP istemci SDK'larını destekler. Bunları yalnızca mevcut iş süreçleriniz için kullanmanızı öneririz.
Varsayılan günlük ayarları
İstemci, aşağıdaki varsayılanlarla günlük dosyalarını otomatik olarak oluşturur:
| Ayar | Varsayılan değer | Özelleştirilebilir | Sistem özelliği |
|---|---|---|---|
| Günlük depolama yolu | /{user.home}/logs/ons.log |
Evet | ons.client.logRoot |
| Günlük düzeyi | INFO |
Evet | ons.client.logLevel |
| Tutulacak maksimum günlük dosyası sayısı | 10 |
Evet | ons.client.logFileMaxIndex |
| Günlük dosya boyutu | 64 MB |
Hayır | Yok |
Varsayılan yolda, {user.home} Java işlemini çalıştıran hesabın ev dizinidir.
Günlük düzeyleri
Geçerli günlük düzeyleri şunlardır:
| Düzey |
|---|
ERROR |
WARN |
INFO |
DEBUG |
Günlük kaydını etkinleştirin
Java SDK, günlük kaydı için SLF4J API'sini kullanır. Kurulum, SDK sürümünüze bağlıdır.
Java SDK 1.7.8.Final veya sonraki sürümler
Kurulum gerekmez. Bu sürümler, günlük çıktısını otomatik olarak işleyen yerleşik bir günlük çerçevesi içerir.
1.7.8.Final öncesindeki Java SDK sürümleri
Desteklenen bir günlük çerçevesine (Log4j veya Logback) bağımlılığı pom.xml veya .lib dosyanıza ekleyin.
Java SDK 1.7.8.Final ve önceki sürümler yalnızca Log4j ve Logback'i destekler. Log4j2 desteklenmez.
-
Uygulamanız hem Log4j hem de Logback içeriyorsa günlük çakışmaları istemci günlüklerinin doğru yazılmasını engeller. Yalnızca bir günlük çerçevesi kullanın. Çakışmaları belirlemek için aşağıdaki komutu çalıştırın:
mvn clean dependency:tree | grep log Bu sınırlamalardan kaçınmak için Java SDK'nın en son sürümüne yükseltin.
İstemci günlüklerini özelleştirin
Özel günlük yapılandırması için Java SDK 1.2.5 veya sonraki bir sürüm gerekir.
Java sistem özelliklerini başlatma betiğinizde veya entegre geliştirme ortamınızın (IDE) sanal makine (VM) seçeneklerinde -D bayrağı aracılığıyla iletin.
Kullanılabilir özellikler
| Özellik | Açıklama | Geçerli değerler |
|---|---|---|
ons.client.logRoot |
Günlük dosyası dizini | Sisteminizdeki herhangi bir yazılabilir yol |
ons.client.logLevel |
Minimum günlük düzeyi | ERROR, WARN, INFO, DEBUG |
ons.client.logFileMaxIndex |
Tutulacak maksimum günlük dosyası sayısı | 1 ile 100 arasında (değer aralık dışındaysa veya geçersizse varsayılan olarak 10 kullanılır) |
Örnekler
Linux veya macOS:
-Dons.client.logRoot=/home/admin/logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
Windows:
-Dons.client.logRoot=D:\logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
/home/admin/logs ve D:\logs değerlerini sisteminizdeki gerçek dizinlerle değiştirin. Uygulama işleminin belirtilen yola yazma iznine sahip olması gerekir; aksi takdirde günlükler yazılamaz.
Günlük sorunlarını giderin
| Belirti | Neden | Çözüm |
|---|---|---|
| Günlük dosyası oluşturulmuyor | Eksik günlük çerçevesi bağımlılığı (1.7.8.Final öncesi SDK) | pom.xml dosyanıza Log4j veya Logback bağımlılığı ekleyin |
| Günlük çıktısı boş veya eksik | Sınıf yolunda hem Log4j hem de Logback bulunuyor | Bir çerçeveyi kaldırın. mvn clean dependency:tree komutunu çalıştırın ve çakışmaları belirlemek için çıktıyı log anahtar kelimesine göre arayın |
| Günlükler beklenmeyen bir dizine yazılıyor | Varsayılan {user.home} değeri çalışma zamanında farklı çözülüyor |
ons.client.logRoot özelliğini açıkça bilinen bir yola ayarlayın |
| Günlük dosyaları sınırsız büyüyor | Varsayılan saklama, her biri 64 MB olan 10 dosyayı tutar (toplam 640 MB) | ons.client.logFileMaxIndex değerini düşürün veya harici günlük döndürme ayarlayın |