2014-07-07 11 views
5

Bir log4j girişinde bir anahtar/değer çiftini, yalnızca değer MDC'de ayarlanmışsa nasıl yazdırırım? Bu anahtar için MDC üzerinde bir değer yoktur, sadece "müşteri =" bölümünü yazdırmak istiyorumBir LOG4J deseninde MDC'den koşullu olarak metin eklemek nasıl?

%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n 

:

Örneğin, ben şu anda aşağıdaki desene sahiptir. Örneğin

, benim programı başlatırken günlükleri bu modeli kullanılarak kaydedilebilir diye, kaydedilecek bir istemci olacak: istemci içinde (ve ayarladıktan sonra oturum açtıktan sonra,

%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Ancak bir "müşteri" tuşuyla MDC), şu bu kullanarak yazdırmak gerekiyor:

%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n 

böyle "koşullu desen" log4j üzerinde var mı?

Eğer

+0

Böyle bir özellik bilmiyorum bile Log4j2 içinde ... için herhangi bir değer varsa: Ben yoksa ben şimdi kullanıyorum

MDC.put("client", client.getId()); 

kullanırsınız Örneğin,

oturum açma anahtarı, '% X {client}' boş bir dize oluşturacaktır. Neden istemciden 'client =' öğesini kaldırmıyorsunuz ya da 'c =' string ön ekini değerinize eklemiyorsunuz? – xav

+0

Hm bu mümkün olabilir! Yarın ofise gittiğimde bunu deneyeceğim. – Matheus208

cevap

3

Ben xav önerisini kullanarak endEND ederiz.

"client =" dizesini log4j düzeninden kaldırdım ve her defasında MDC'ye bir girdi ekledim. En güzel çözüm değil ama harika çalıştı!

MDC.put("client", "client="+client.getId().toString());