2016-05-25 12 views
0

init habe ich diese log4j.properties DateiWarum ist log4 appender member null? kann nicht log4j

# Root logger 
log4j.rootLogger=INFO, sift 
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer 
log4j.configDebug = true 

# Sift appender 
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender 
log4j.appender.sift.key=session_id 
log4j.appender.sift.default=no_session_id 
log4j.appender.sift.appender=org.apache.log4j.FileAppender 
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout 
log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n 
log4j.appender.sift.appender.file=/var/log/rr/$\\{session_id\\}.log 
log4j.appender.sift.appender.append=true 

Aber ich NPE bekommen, wenn ich versuche

logger.error("example1");

Was loggt bin ich fehlt, wie die "apender" Mitglied null nicht zu machen?

hier ist der Stack-Trace für die kurze main:

Exception in thread "main" java.lang.NullPointerException 
    at org.apache.log4j.sift.MDCSiftingAppender.getAppender(MDCSiftingAppender.java:109) 
    at org.apache.log4j.sift.MDCSiftingAppender.append(MDCSiftingAppender.java:79) 
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251) 
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66) 
    at org.apache.log4j.Category.callAppenders(Category.java:206) 
    at org.apache.log4j.Category.forcedLog(Category.java:391) 
    at org.apache.log4j.Category.error(Category.java:305) 
    at com.waze.rr_logger.SiftExampleLog4j.log(SiftExampleLog4j.java:14) 
    at com.waze.rr_logger.SiftExampleLog4j.main(SiftExampleLog4j.java:22) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Haupt:

public class SiftExampleLog4j { 

    static org.apache.log4j.Logger logger = Logger.getLogger(SiftExampleLog4j.class); 

    public void log() { 
     BasicConfigurator.configure(); 
     org.apache.log4j.MDC.put("session_id","MyGooApp"); 

     logger.error("example1"); 

     org.apache.log4j.MDC.put("session_id","MyFooApp"); 

     logger.error("example2"); 
    } 

    public static void main (String[] args){ 
    new SiftExampleLog4j().log(); 
    } 
} 
+0

Haben Sie mehr Code als für den zugeordneten Diagnosekontext ??? –

+0

das ist der ganze Code in meinem Programm. Was fehlt dir? –

Antwort

0

diese dann versuchen und diese MDC Verweise entfernen:

public class SiftExampleLog4j { 

    static org.apache.log4j.Logger logger = Logger.getLogger(SiftExampleLog4j.class); 

    public void log() { 
     logger.error("example1"); 
     logger.error("example2"); 
    } 

    public static void main (String[] args){ 
    new SiftExampleLog4j().log(); 
    } 
} 

Dann versuchen Sie in das Hinzufügen MDC-Bit zu einem Zeitpunkt. Ich denke, Sie müssen viel mehr Code für MDC hinzufügen. Außerdem gibt es eine Ausnahme, daher benötigen Sie einen try/catch-Handler.

+0

hat es nicht geholfen. Ich denke, ich vermisse etwas in der Datei log4j.properties. Nicht redundanter Code, glaube ich. –

Verwandte Themen