java - not - SLF4J-Logback: ¿Cómo configurar los registradores en tiempo de ejecución?
logback pattern (2)
estamos usando LogBack con nuestro proyecto, quiero configurar el registrador de acuerdo con algunos valores de la Base de datos, es decir, si algún valor de DB se establece en verdadero, entonces el registrador debe usar tanto el archivo como los agregadores de la base de datos, si es falso, el registrador debe usar solo el agregador de la base de datos ,
También quiero conservar el uso de registradores finales estáticos, por lo que no crearé una nueva instancia cada vez que se llame al registrador,
Entonces, ¿cómo podría hacer algo como esto?
Saludos,
¿Hay una razón específica detrás de leer la propiedad de configuración de la base de datos? Una sugerencia sería utilizar JNDI. Logback puede leer los valores configurados JNDI utilizando la etiqueta.
Debe configurar Logback programáticamente como se describe en este ejemplo .
public class Main {
public static void main(String[] args) {
Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
FileAppender<LoggingEvent> fileAppender =
(FileAppender<LoggingEvent>) logger.getAppender("file");
if(fileAppender != null) {
fileAppender.stop();
fileAppender.setFile("new.log");
PatternLayout pl = new PatternLayout();
pl.setPattern("%d %5p %t [%c:%L] %m%n)");
pl.setContext(lc);
pl.start();
fileAppender.setLayout(pl);
fileAppender.setContext(lc);
fileAppender.start();
}
... etc
}
}