Necesito cambiar mis propiedades de log4j (rootLogger, MaxFileSize, etc.) en tiempo de ejecución. ¿Cómo puedo hacer esto?Cambie las propiedades de log4j en tiempo de ejecución
Respuesta
Dos referencias útiles:
Use LogManager.resetConfiguration();
para borrar la configuración actual y configurar de nuevo.
Otro enfoque es construir un nuevo appender y reemplazar el anterior con él (la mayoría de los appenders no admiten el cambio de su configuración). De esta forma, todos los registradores (y sus niveles, etc.) permanecen intactos.
Para que esto funcione, normalmente agrego el primer appender del código (y no con un archivo de configuración). Eso me permite guardar una referencia que hace que sea más simple eliminarla más tarde.
No entendí. ¿Puedes explicar mejor? Tengo cinco Logger que usan la configuración de log4j ... Necesito cambiar MaxFileSize (es decir) y establecer este nuevo puntal para todos mis registradores (en tiempo de ejecución) ... – user1110002
Un registrador es solo una clave. No tiene MaxFileSize. El tamaño del archivo es una propiedad de * appender *. Los appenders se pueden unir a los registradores y harán algo con los mensajes de registro. Entonces, ¿qué debe hacer? Encuentre los ** appenders ** (los registradores tienen métodos para obtener todos los registradores conectados) y luego debe reemplazarlos. –
Ok Aaron. Intenté hacer con este código: Logger l = Logger.getLogger (myclass); LogManager.resetConfiguration(); l.setLevel (Level.DEBUG); RollingFileAppender appender = new RollingFileAppender(); appender.setMaxBackupIndex (numberOfLogsToKeep); logger.addAppender (appender); No funciona. ¿Cómo puedo cambiar el appender de mi registrador? – user1110002
https://github.com/apache/jena/blob/master/jena-tdb/log4j.properties tiene un archivo de propiedades log4j.
basado en él estoy usando la función configureLog4j ayudante se muestra a continuación como esto:
conjunto de nivel de registro de Jena en tiempo de ejecución
String level=org.apache.log4j.Level.OFF.toString();
if (debug)
level=org.apache.log4j.Level.INFO.toString();
configureLog4j(level);
función configureLog4J
/**
* configure Log4J
* @param level -the level to use e.g. "INFO", "DEBUG", "OFF"
* see org.apache.log4j.Level
*/
private void configureLog4j(String level) {
Properties props = new Properties();
props.put("log4j.rootLogger", level+", stdlog");
props.put("log4j.appender.stdlog", "org.apache.log4j.ConsoleAppender");
props.put("log4j.appender.stdlog.target", "System.out");
props.put("log4j.appender.stdlog.layout", "org.apache.log4j.PatternLayout");
props.put("log4j.appender.stdlog.layout.ConversionPattern",
"%d{HH:mm:ss} %-5p %-25c{1} :: %m%n");
// Execution logging
props.put("log4j.logger.com.hp.hpl.jena.arq.info", level);
props.put("log4j.logger.com.hp.hpl.jena.arq.exec", level);
// TDB loader
props.put("log4j.logger.org.apache.jena.tdb.loader", level);
// Everything else in Jena
props.put("log4j.logger.com.hp.hpl.jena", level);
props.put("log4j.logger.org.apache.jena.riot", level);
// TDB
// TDB syslog.
props.put("log4j.logger.TDB", level);
props.put("log4j.logger.com.hp.hpl.jena.tdb", level);
props.put("log4j.logger.com.hp.hpl.jena.tdb.transaction", level);
props.put("log4j.logger.com.hp.hpl.jena.tdb.transaction.NodeTableTrans",
level);
props.put("log4j.logger.com.hp.hpl.jena.tdb.transaction.TransactionManager",level);
props.put("log4j.logger.com.hp.hpl.jena.tdb.transaction.TestTransSystem",level);
// Joseki server
props.put("log4j.logger.org.joseki", level);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
- 1. Cambie el parámetro del atributo en el tiempo de ejecución
- 2. Cambie el parámetro del atributo personalizado en tiempo de ejecución
- 3. Hacer que log4j tenga conocimiento de los cambios en la configuración en el tiempo de ejecución
- 4. Ignorar algunas propiedades en tiempo de ejecución al usar DataContractSerializer
- 5. Cómo establecer el archivo de propiedades log4j?
- 6. podemos cambiar el nivel de registro de log4j en el tiempo de ejecución
- 7. Decidir qué propiedades se serializan en el tiempo de ejecución
- 8. Propiedades de Log4j en un lugar personalizado
- 9. log4j StringToMatch en el archivo de propiedades
- 10. Cambie el nombre de los nombres de las propiedades y cambie los valores de varios objetos
- 11. Práctica recomendada para configurar las propiedades de Log4j Ruta
- 12. Propiedades de Log4j de cada módulo
- 13. Loop a través de todas las propiedades de objeto en tiempo de ejecución
- 14. Log4j: Crear/modificar appenders en tiempo de ejecución, archivo de registro reconstruido y no anexado
- 15. Java - Propiedades: ¿Agregar nuevas claves al archivo de propiedades en tiempo de ejecución?
- 16. NHibernate: accediendo a las propiedades de configuración (dialecto Sql) en el tiempo de ejecución
- 17. ¿Es posible cambiar las propiedades de una referencia web en tiempo de ejecución?
- 18. ¿Cómo ajusto los niveles de log4j en el tiempo de ejecución?
- 19. archivo de propiedades log4j: cómo configurar?
- 20. Cambie el ancho de una ProgressBar agregada en tiempo de ejecución
- 21. Excepciones de tiempo de ejecución de registro en Java usando log4j
- 22. configure log4j para iniciar sesión en el archivo personalizado durante el tiempo de ejecución
- 23. WPF - cambie el tamaño de fuente global en el tiempo de ejecución
- 24. Cambie dinámicamente una imagen en Crystal Report en tiempo de ejecución
- 25. ¿Cuál es la diferencia entre las bibliotecas de tiempo de compilación y las bibliotecas de tiempo de ejecución en Java?
- 26. ¿Cómo puedo acceder a los apiladores Log4J configurados en tiempo de ejecución?
- 27. propiedades Cargando log4j de un paquete en java
- 28. Java Swing: cambie la configuración regional dinámicamente en el tiempo de ejecución
- 29. Delphi 2009 - cree un TPanel en tiempo de ejecución y cambie su color
- 30. Modificación característicos de las clases en tiempo de ejecución
Tal vez esto puede ayudar: http://www.avajava.com/tutorials/lessons/how-do-i-change-my-log4j-settings-whi le-my-web-application-is-running.html – alonp
En log4j 2.x 'org.apache.logging.log4j.core.config.Configurator' puede ser útil en algunos casos https://logging.apache.org/ log4j/2.x/faq.html # reconfig_level_from_code –