prudent property name logger example java logging logback

java - name - property logback xml



¿Es posible encontrar archivos de registro logback mediante programación? (3)

Sería útil adjuntar automáticamente los archivos de registro a los correos electrónicos compatibles. Podría establecer la ruta mediante programación (como en Configuración de la ruta de Logback Appender mediante programación ), pero preferiría que los usuarios configuren el registro de forma familiar a través de logback.xml . Entonces, ¿puedo encontrar los archivos que usa logback para el registro?


La respuesta dada por @ tafoo85 es correcta, pero le dará solo los solicitantes.

Para obtener un archivo más específico utilizado por el registrador Logback, espero que el siguiente código ayude a alguien.

File clientLogFile; FileAppender<?> fileAppender = null; LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory(); for (Logger logger : context.getLoggerList()) { for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) { Object enumElement = index.next(); if (enumElement instanceof FileAppender) { fileAppender=(FileAppender<?>)enumElement; } } } if (fileAppender != null) { clientLogFile=new File(fileAppender.getFile()); } else { clientLogFile = null; } Log.d("logfile path", clientLogFile.getAbsolutePath());


Puede obtener el archivo real como tal:

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory(); for (ch.qos.logback.classic.Logger logger : context.getLoggerList()) { for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) { Appender<ILoggingEvent> appender = index.next(); if (appender instanceof FileAppender) { FileAppender<ILoggingEvent> fa = (FileAppender<ILoggingEvent>)appender; ResilientFileOutputStream rfos = (ResilientFileOutputStream)fa.getOutputStream(); File file = rfos.getFile(); System.out.println(file.getAbsolutePath()); } } }


Puede obtener la lista de todos los agregadores en un contexto determinado. Para hacer esto:

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory(); for (Logger logger : context.getLoggerList()) { for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) { Appender<ILoggingEvent> appender = index.next(); } }

Esto se repite en la lista de todos los agregadores en todos los registradores para el contexto actual.