实现基于变量的日志记录?

时间:2018-03-18 15:10:39

标签: java

我用三个不同的日志创建了一个漂亮的UI(一般日志和两个特定类日志)。

每个日志都可以打印不同颜色的不同行。

我想这样做,所以我可以显示信息/错误/警告。 现在,问题是,我只想在设置变量(类似detailedDebug = true)时进行详细的调试。

我想要这样的事情:

Simple              | Detailed
Error thrown in ... | Error thrown.. + dump of all variables related to the error

现在,使用if语句我可以轻松实现,但是,这似乎过于复杂(因为调试原因使代码复杂化)。

我怎样才能实现这一点(同时使其易于使用,最重要的是清洁)?

我是否应该在每个使用自动检查变量的日志记录功能的类中创建一个方法然后执行要求?

1 个答案:

答案 0 :(得分:-1)

您应该使用日志级别作为变量来控制细节。如果需要更多细节,请将级别调低至最佳状态。

Hoewever,您希望记录的某些操作可能需要相当多的资源来计算细节(例如,您可以从数据库中检索信息等)。在这种情况下,您应该使用if语句,因为即使日志级别处于ERROR级别,也会消耗资源。

示例:

以下代码将始终执行:

logger.log(Level.FINEST, "Some detailed log info which sows the results from DB {0}",
    new Object[]{ getResults() }); 

如果您只想在显示FINEST时执行此代码,则需要将语句包装在if语句中:

if (logger.isLoggable(Level.FINEST)) {
    // Some intensive logging
}