Change log4j properties at runtime
我需要在运行时更改我的 log4j 属性(rootLogger、MaxFileSize 等)。
我该怎么做?
使用
另一种方法是构建一个新的 appender 并用它替换旧的 appender(大多数 appender 不支持更改其配置)。这样,所有记录器(及其级别等)都保持不变。
为此,我通常从代码中添加第一个附加程序(而不是使用配置文件)。这让我可以保存一个参考,这样以后删除它就更简单了。
https://github.com/apache/jena/blob/master/jena-tdb/log4j.properties
有一个 log4j 属性文件。
基于此,我正在使用如下所示的 configureLog4j 辅助函数:
在运行时设置jena日志级别
1 2 3 4 | String level=org.apache.log4j.Level.OFF.toString(); if (debug) level=org.apache.log4j.Level.INFO.toString(); configureLog4j(level); |
配置Log4J函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /** * 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); } |