2011-05-30 29 views
10

que estoy experimentando un problema con log4j ConsoleAppender:¿Por qué ConsoleAppender arroja "no ouptut stream or file set for the appender named [null]"?

Si inicializar así:

ConsoleAppender ca = new ConsoleAppender(); 
ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)); 

que da un error y rompe la tala.

de salida de error:

log4j: ERROR No hay flujo de salida o conjunto de archivos para el appender llamado [nula].

Si inicializarlo como esto funciona bien:

ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)); 

Alguien ha tenido este problema? No puedo encontrarlo en el repositorio de Bugzilla, pero si efectivamente fue un problema, ¡sería bastante evidente!

Tal vez estoy looking in the wrong place?

código relevante:

import org.apache.log4j.*; 

public class ConsoleAppenderIssue { 
private static Logger logger = Logger.getLogger(ConsoleAppenderIssue.class); 

public static void main(String [] args) { 
    ConsoleAppender ca = new ConsoleAppender(); 
    ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)); 

    logger.addAppender(ca); 

    logger.info("log something"); 

} 

} 

Respuesta

16

se puede ver por qué ocurre esto si look at the source para ConsoleAppender:

public ConsoleAppender(Layout layout) { 
    this(layout, SYSTEM_OUT); 
    } 

    public ConsoleAppender(Layout layout, String target) { 
    setLayout(layout); 
    setTarget(target); 
    activateOptions(); 
    } 

Se puede ver que pasa ConsoleAppender(Layout)SYSTEM_OUT como objetivo, y también que llama al activateOptions después de configurar el diseño y el objetivo.

Si usa setLayout usted mismo, también deberá establecer explícitamente el objetivo y llamar al activateOptions.

+2

¡Estupendo! Me ayudas mucho. No lo encontré porque depuré el método de registro para descubrir dónde surge la excepción. Pero es bastante profundo y cuando se encuentra, no ayuda a obtener la solución. Miró dentro del constructor ConsoleAppender y lo entendió. ¡Gracias! – AgostinoX

+0

@skaffman puede ayudar con mi pregunta http://stackoverflow.com/questions/30215944/secure-encrypt-log4j-files – shareef

Cuestiones relacionadas