无论如何,或者log4j中的任何配置告诉他在发生某些“日志记录级别”配置时记录一行?
我的意思是有人将调试级别从INFO更改为DEBUG,我希望log4j记录该事件。
由于
答案 0 :(得分:1)
我不确定是不是你的情况,但是如果你使用configureAndWatch
重新加载配置文件,你应该能够看到设置系统属性-Dlog4j.debug=true
所需的信息。
请参阅 http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/xml/DOMConfigurator.html
答案 1 :(得分:0)
LogLog是Log4J的自记录。我从来没有使用它,但如果解决方案存在它就在那里。我建议你下载log4j的源代码并尝试调查它“知道”日志级别正在被更改的地方。一旦找到代码,就会看到它是否打印出自我记录的内容并根据需要进行配置。
如果您能找到更具体的答案,我会感激不尽。祝好运。
答案 2 :(得分:0)
在运行时,如果你的应用程序中有一个servlet,jsp或屏幕,你可以在其中更改日志级别,你很可能会做这样的事情
public void changeLogLevel(String className, String logLevel){
Logger logger = Logger.getLogger(className);
Level level = Level.toLevel(logLevel);
logger.setLevel(level);
}
为了记录此事件,您只需为此事件添加额外的记录器语句
private static Logger classLogger = Logger.getLogger(ThisClass.class);
public void changeLogLevel(String className, String logLevel){
Logger logger = Logger.getLogger(className);
Level level = Level.toLevel(logLevel);
logger.setLevel(level);
classLogger.debug("The Level of " + className + " has changed to " + logLevel);
}
然后,每次发生日志级别时,都可以在此处记录。如果您想获得想象力,只需将此日志发送到自己的文件即可。您可能希望进一步推进该方法,以包括更改日志级别的用户的IP /用户名。
如果您可以控制您的应用程序,请确保这是用户可以更改日志记录级别的应用程序中的唯一点。
答案 3 :(得分:0)
这不能回答你的问题,但是内置的java.util.logging.LogManager实现有一个addPropertyChangeListener()方法,可以完全按照你想要的方式执行。
我在Log4J中找不到任何可比的东西,但我看起来并不那么难......