我需要在运行时更改log4j属性(rootLogger,MaxFileSize等)。 我该怎么做?在运行时更改log4j属性
回答
两个有用的参考资料:
使用LogManager.resetConfiguration();
清除当前的配置和重新配置。
另一种方法是构建一个新的appender并用它替换旧的appender(大多数appender不支持更改它们的配置)。这样,所有的记录仪(和他们的等级等)保持完好。
为了这个工作,我通常从代码(而不是配置文件)中添加第一个appender。这使我可以保存一个引用,使其更容易在稍后删除。
我不明白。你能解释得更好吗?我有五个记录器使用log4j的配置...我需要更改MaxFileSize(即),并为我的所有记录器(运行时)设置此新的道具... – user1110002 2011-12-21 17:10:54
记录器只是一个关键。它没有MaxFileSize。文件大小是* appender *的一个属性。 Appender可以附加到伐木工,他们会做一些日志消息。所以你需要做的是:找到** appenders **(记录器有方法来获取所有连接的记录器),然后你必须替换它们。 – 2011-12-21 17:40:15
好的亚伦。我试着做这个代码:Logger l = Logger.getLogger(myclass); LogManager.resetConfiguration(); l.setLevel(Level.DEBUG); RollingFileAppender appender = new RollingFileAppender(); appender.setMaxBackupIndex(numberOfLogsToKeep); logger.addAppender(附加器);它不起作用。我怎样才能改变记录器的appender? – user1110002 2011-12-21 18:28:13
https://github.com/apache/jena/blob/master/jena-tdb/log4j.properties 有一个log4j属性文件。
它基于我使用下面这个样子的configureLog4j辅助函数:在运行时
集耶拿日志记录级别
String level=org.apache.log4j.Level.OFF.toString();
if (debug)
level=org.apache.log4j.Level.INFO.toString();
configureLog4j(level);
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. 如何在运行时更改log4j appender?
- 2. JTable属性在运行时更改
- 3. Flex在运行时更改css属性
- 4. 在运行时如何在运行时更改属性值
- 5. 如何在运行时更改所选值属性/属性?
- 6. openseadragon更新属性showReferenceStrip在运行时
- 7. 在C#中更改一个属性为只读在运行时
- 8. luigi相关性在运行时更改
- 9. 更改在MFC中运行时编辑框属性
- 10. 如何在运行时更改属性访问器
- 11. 如何在类中更改运行时属性的值?
- 12. 在运行时更改侦听器属性
- 13. 如何在运行时更改属性值
- 14. 在运行时更改GWT中CSS类的属性
- 15. 在运行时更改视图属性的正确方法
- 16. 更改属性在运行时绑定的路径
- 17. C#在运行时停止属性更改
- 18. 更改顶部控件在运行时的属性
- 19. 如何在运行时使用Camel更改处理器属性?
- 20. 在运行时更改自定义属性的参数
- 21. 在运行时使用属性文件更改文本/内容
- 22. 在运行时更改属性的参数
- 23. Silverlight:在运行时更改静态资源的属性
- 24. 我想在java中运行时更改属性名称
- 25. Qml QtQuickControls2,在运行时更改样式属性
- 26. 是否可以在运行时修改属性的属性?
- 27. 加载log4j属性文件并进行编程式更改
- 28. 当运行java jar命令时找不到log4j属性文件
- 29. 如何在属性值更改时更新从属属性?
- 30. log4cplus属性文件更改没有被读取运行时
也许这可以帮助:http://www.avajava.com/tutorials/lessons/how-do-i-change-my-log4j-settings-whi le-my-web-application-is-running.html – alonp 2011-12-21 15:46:09
在log4j 2.x中'org.apache.logging.log4j.core.config.Configurator'在某些情况下可能会有所帮助https://logging.apache.org/ log4j/2.x/faq.html#reconfig_level_from_code – 2016-11-23 11:33:54