0

我知道我可以使用

Logger.setLevel(<level here>);

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

本质上,我有一个使用日志 API 的类。我希望赋予班级用户以他们喜欢的方式配置日志级别的权力。我已经看到使用 log4j 完成了这一点,但没有使用日志记录 API。

对此有最佳做法吗?我应该有一些功能吗

setLogLevel()

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

谢谢!

4

2 回答 2

4

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

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

于 2013-10-14T15:05:22.140 回答
0

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

您的问题不清楚,但我认为您是在询问如何根据用户设置的日志级别记录内容。答案是您只需正常编写日志语句即可;例如

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

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

理论上,也可以根据某些条件将给定的事件记录在不同级别。但是,您可能会通过这样做从用户手中夺走控制权。

于 2013-10-14T15:36:52.240 回答