2011-01-07 6 views
13

Ich habe derzeit das folgende Musterlayout in log4j. Ich möchte die Prozess-ID zur Protokolldatei hinzufügen. Wie kann ich es tun?Wie wird die Prozess-ID zu einer LOG4J-Protokolldatei hinzugefügt?

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

Pasted Probe Lognachricht

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

möglich Duplikat von [Wie Prozess-ID einzuloggen mit log4cxx oder log4j] (http://stackoverflow.com/questions/4286089/ h ow-zu-Log-Prozess-ID-Using-Log4cxx-or-Log4j) – skiphoppy

+0

Möchten Sie die Java-Prozess-ID gedruckt oder die aktuelle Thread-ID gedruckt haben? – armstrhb

Antwort

2

Es gibt keine Möglichkeit, es mit Standard-Java-Klassen zu tun. Im Allgemeinen wird die Prozess-ID auf Dateiebene und nicht auf Protokollebene angehängt. Und here ist ein Beispiel dafür.

+0

Ich habe nur log4j.properites Datei. Ich sehe keine XML-Konfigurationsdatei. – Arav

+0

In den Weblink, den Sie eingefügt haben, gibt es eine XML-Konfigurationsdatei – Arav

+0

Ich sehe keine XML-Konfigurationsdatei. Wo kann ich die Änderung vornehmen – Arav

10

Sie sollten MDC verwenden, es zu tun

In der Konfigurationsdatei:

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

%X{PID} wird verwendet, um den Kontextwert entspricht PID

Und dann, im Code, bevor Die Protokollierung beginnt:

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

Ich versuche, Ihren Code in Wso2 esb in Skript Mediator wie folgt auszuführen, aber es gibt einen Fehler. importPackage (Pakete.java.net); importPackage (java.lang.management); importPackage (Packages.org.apache.log4j); versuchen { \t RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); Zeichenfolge pid = rt.getName(); MDC.put ("PID", pid); } } catch (e) {} –

+0

Was ist der Fehler? – ToYonos

+0

WSo2 EsB erlaubt mir nicht, die Änderung zu speichern. Es gibt eine Proxy-Admin-Ausnahme, wenn ich diesen Skript-Mediator entferne und etwas anderes ändere, funktioniert der Service gut. Ich denke, es ist etwas falsch mit Code, vielleicht bin ich nicht die richtigen Pakete oder "Skript" Mediator nimmt "Javascript" als Eingabe und das ist möglicherweise nicht erlaubt in Java-Skript. –

1

Mit dem folgenden Muster, threadID und Klasse zeigt. Wenn Sie die Prozess-ID sehen möchten, können überprüfen here

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

ich das geschafft, aber ich habe mehrere Appen, eine für jeden Teil der Anwendung, wie folgt aus:

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 

hier sind einige Beispiele der erzeugten Protokolle, zu überprüfen, ob dies ist, was Sie benötigen:

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

Danke für Ihre Antwort, aber ich brauchte die Prozess-ID, ich verwende bereits Thread-ID. –