2011-01-07 13 views
13

Mam obecnie poniższy układ wzorów w log4j. Chcę dodać identyfikator procesu do pliku dziennika. Jak mogę to zrobić?Jak dodać identyfikator procesu do pliku logu LOG4J?

log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

Pasted wiadomość dziennika próbka

2011-01-07 11:48:21,940 [main] INFO Testing1 
2011-01-07 11:48:21,942 [main] INFO Test.common.ApplicationProperties - Used log4j 

log4j.properties
"log4j.properties" [Read only] 26 lines, 884 characters 
log4j.rootCategory=DEBUG, stdout, A1 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=WARN 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p (%c) %m%n 


log4j.appender.A1=org.apache.log4j.RollingFileAppender 
log4j.appender.A1.Threshold=DEBUG 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
log4j.appender.A1.File=/homw/cus/logs/ccl.02.log 
log4j.appender.A1.MaxFileSize=5MB 
log4j.appender.A1.MaxBackupIndex=40 


log4j.category.test.common.DBConnectionPool=WARN 
log4j.category.test.common.DataBaseHandler=WARN 
log4j.category.test.cttg.tables=WARN 
log4j.category.test.middleware.tables=WARN 

log4j.logger.org.apache.axis=ERROR 
log4j.logger.org.apache.catalina=ERROR 
+1

możliwe duplikat [Jak zalogować się przy użyciu identyfikatora procesu Log4cxx lub log4j] (http://stackoverflow.com/questions/4286089/ h ow-to-log-process-id-using-log4cxx-or-log4j) – skiphoppy

+0

Czy chcesz wydrukować identyfikator procesu Java lub wydrukować bieżący identyfikator wątku? – armstrhb

Odpowiedz

2

Nie ma sposób to zrobić przy użyciu standardowych klas Javy. Ogólnie identyfikator procesu jest dołączany na poziomie pliku, a nie na poziomie dziennika. Przykładem tego jest here.

+0

Mam tylko plik log4j.properites. Nie widzę żadnego pliku konfiguracyjnego xml. – Arav

+0

W wklejonym pliku istnieje plik xml konfiguracyjny – Arav

+0

Nie widzę żadnego pliku konfiguracyjnego xml. Gdzie mogę dokonać zmiany – Arav

10

Należy użyć MDC zrobić to

W pliku konfiguracyjnym:

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p (%c) %m%n %X{PID} 

%X{PID} służy do dopasowania wartości kontekstowe PID

a następnie w kodzie, zanim rejestracja rozpoczyna się:

log4j 1.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); 
String pid = rt.getName(); 
MDC.put("PID", pid); 

log4j 2.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); 
String pid = rt.getName(); 
ThreadContext.put("PID", pid); 
+0

Próbuję uruchomić twój kod w wso2 esb w mediatorze skryptowym, ale daje błąd. importPackage (Packages.java.net); importPackage (java.lang.management); importPackage (Packages.org.apache.log4j); try { \t RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); String pid = rt.getName(); MDC.put ("PID", pid); } } catch (e) {} –

+0

Jaki jest błąd? – ToYonos

+0

WSo2 EsB nie pozwala mi zapisać zmiany. daje wyjątek administratora serwera proxy, jeśli usunę tego mediatora skryptu i zmienię coś innego, usługa działa poprawnie. Myślę, że coś jest nie tak z kodem, może nie mam odpowiednich pakietów lub "skrypt" mediator bierze "javascript" jako dane wejściowe i może to nie być dozwolone w skrypcie java. –

1

z poniższym wzorem, pokazując ThreadID i klasę. Jeśli chcesz zobaczyć identyfikator procesu, może sprawdzić here

log4j.appender.SYSLOG.layout.conversionPattern=%-5p %d{ddMMyyyy HH:mm:ss.SSS} [%t:%c] %m%n 

udało mi się to zrobić, ale mam kilka appenders, po jednym dla każdej części wniosku, jak następuje:

log4j.rootCategory=ERROR, SYSLOG2 
log4j.logger.com.myself.logic=DEBUG, SYSLOG 
log4j.logger.com.myself.database=DEBUG, SYSLOG3 
log4j.logger.com.myself.other=DEBUG, SYSLOG 

Oto kilka przykładów generowanych dzienników, aby sprawdzić, czy to jest to, czego potrzebują:

INFO 20012015 11:56:17.318 [pool-1-thread-1:com.myself.logic.MonitoringTask] 10602: Validation of orders before UTC=2015-01-20T16:56:17 
INFO 20012015 11:56:34.200 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: MPU Library folder: xxxxx 
INFO 20012015 11:56:34.209 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: MPU Configuration folder: xxxxx 
INFO 20012015 11:56:34.773 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: Calling InitLeap() 
INFO 20012015 11:56:34.786 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: Calling InitFourier() 
INFO 20012015 11:57:10.151 [CRON_Thread:com.myself.other.DTOLDispatcher] 10202: Times to send: [11:00, 23:00] - current time = Tue Jan 20 11:57:10 UTC 2015 
INFO 20012015 11:58:10.165 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Executing Monitoring Task UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:10.171 [pool-1-thread-5:com.myself.logic.OrderValidationTask] 10602: Executing OrderValidationTask UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:10.291 [CRON_Thread:com.myself.other.DTOLDispatcher] 10202: Times to send: [11:00, 23:00] - current time = Tue Jan 20 11:58:10 UTC 2015 
INFO 20012015 11:58:10.684 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Expiration of orders before UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:11.218 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: checking orders for suppresed status before UTC=2015-01-20T11:58:11 
INFO 20012015 11:58:11.244 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Validation of orders before UTC=2015-01-20T16:58:11 
+0

Dziękuję za odpowiedź, ale potrzebowałem identyfikatora procesu, używam już identyfikatora wątku. –

Powiązane problemy