2011-05-13 3 views
6

Estoy tratando de hacer que una llamada al registro dirija diferentes niveles de salida a diferentes ubicaciones. Quiero que todos los registros siempre vayan al archivo, y solo INFO y arriba para ir a la consola. ¿No es eso posible? Tengo lo siguiente y no funciona. Ambos son siempre los mismos:¿Cómo uso el archivo logback.groovy para registrar el nivel TRACE en el archivo y INFO en la consola

def bySecond = timestamp("yyyyMMdd'.'HHmmss", context.birthTime) 

appender("STDOUT", ConsoleAppender) { 
    encoder(PatternLayoutEncoder) { 
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" 
    } 
} 

appender("FILE", FileAppender) { 
    file = "./logs/log-${bySecond}.log" 
    encoder(PatternLayoutEncoder) { 
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" 
    } 
} 

logger("com.crystal", WARN, ["STDOUT"]) 
logger("com.crystal", TRACE, ["FILE"]) 

root(TRACE) 

scan() 

¿Es posible dirigir el mismo mensaje de registro a dos lugares diferentes según niveles diferentes?

+0

Etiquetado de su pregunta como "logback" sería de gran ayuda. – Ceki

Respuesta

6

envío de seguimiento para ambos appenders

logger 'com.crystal', TRACE, ['STDOUT', 'FILE'] 

pero añadir un filtro a la ConsoleAppender

appender("FILE", FileAppender) { 
    filter(ch.qos.logback.classic.filter.ThresholdFilter) { 
    level = INFO 
    } 
    ... 
} 
+0

Muchas gracias! ¡Lo intenté para siempre sin éxito hasta que llegaste! –

Cuestiones relacionadas