使用日志API进行Java条件日志记录

时间:2013-10-14 14:43:29

标签: java logging java.util.logging

我明白我可以使用

Logger.setLevel(<level here>);

设置记录级别(将其关闭,打开等)。但是,我不确定如何根据用户指定的日志级别有条件地记录。

本质上,我有一个使用日志记录API的类。我希望为该类用户提供配置日志级别的能力。我已经看到使用log4j完成此操作,但没有使用日志记录API。

这是最好的做法吗?我应该有一些功能

setLogLevel()

用户可以传递Level.INFO或其他什么?或者有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我不确定,如果正确理解了这个问题,但是你不应该从调用记录器的代码中设置日志记录级别。日志记录背后的想法是,开发人员将所有消息记录在适当的级别。例如,在DEBUG级别“已开始计算xyz”,“INFO级别已将新用户设置为DB”,ERROR级别为“从......捕获异常”。仅当记录器具有相同或更高的日志记录级别时,记录器才会打印该消息。应根据环境设置日志记录级别,例如,应用程序外部的DEBUG for development和INFO for production。

如果消息的创建非常耗时并且您不想创建日志消息,除非它将被真正记录,否则条件日志记录非常有用(请查看此link)。如果要检查,java.util.logging中的记录器实际上将以给定级别进行记录,则可以使用this方法。

答案 1 :(得分:0)

  

但是,我不确定如何根据用户指定的日志级别有条件地记录。

您的问题尚不清楚,但我认为您会根据用户设置的日志级别询问日志内容。答案就是你只需正常编写日志语句; e.g。

logger.warning("Danger Will Robinson");
...
anotherLogger.info("It's good to be alive");

...让用户使用日志记录配置指定要捕获的日志记录。一般而言,日志记录配置由在运行时加载的配置文件指定,并且可由用户更改。也可以通过编程方式创建或更改日志记录配置,但通过某种用户友好的UI向用户显示此功能将是一项挑战。

理论上,根据某些条件,也可以在不同级别的给定日志事件。但是,您可能会通过这样做来控制用户。