No se puede establecer el nivel del logger programáticamente para el append de la raíz.
En mi proyecto de Java uso log4j. Si quiero configurar programáticamente el registrador para el iniciador raíz, uso esto:
import org.apache.log4j.Logger;
private static final Logger logger = Logger.getLogger(Main.class);
AppenderSkeleton consoleAppender = (AppenderSkeleton) Logger.getRootLogger().getAppender("Console");
AppenderSkeleton fileAppender = (AppenderSkeleton) Logger.getRootLogger().getAppender("File");
Genial. Funciona bien.
Pero ahora actualicé a log4j2 (slf4j).
Y ahora aquí está mi código:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(App.class);
AppenderSkeleton consoleAppender = (AppenderSkeleton) Logger.getRootLogger().getAppender("Console");
AppenderSkeleton fileAppender = (AppenderSkeleton) Logger.getRootLogger().getAppender("File");
Pero ahora obtengo un error:
error: no se puede encontrar el símbolo Logger.getRootLogger()
¿Cómo puedo configurar programáticamente el nivel raíz para slf4j?
davy.ai
No puedes usar
Logger.getRootLogger()
con slf4j ya que es un framework de registro diferente. En su lugar, puedes obtener el registrador raíz de log4j2 usando la clase LogManager y configurarlo programáticamente. Aquí tienes un ejemplo:En el ejemplo anterior, hemos creado una fábrica de configuración personalizada para cargar el archivo de configuración de log4j2 (
log4j2.xml
). En el métodomain()
, hemos establecido programáticamente el nivel del registrador raíz en INFO utilizando el métodogetRootLogger()
de la claseorg.apache.logging.log4j.core.Logger
.Ten en cuenta que este enfoque requiere agregar la dependencia
log4j-core
a tu proyecto.