2016-02-03 70 views
-2

我的一位高级经理告诉我,编写两级日志报表debuginfo是错的,这种方法有什么问题?这个陈述有什么问题?

if(LOGGER.isDebugEnabled()){ 
    LOGGER.info("REST SERVICE LOG :QUERY GENERATED FOR ADVANCED SEARCH IS : \n" +queryBuffer); 
} 
if(LOGGER.isEnabledFor(Level.INFO)){ 
    LOGGER.info("REST SERVICE LOG :QUERY GENERATED FOR ADVANCED SEARCH IS : \n" +queryBuffer); 
} 

对此有何建议?

+2

你的“高级”不愿解释原因吗? –

+0

他说当为调试级别编写日志语句就足够了时,为什么要为不同级别编写相同的日志语句。 – DevG

+0

那么你为什么觉得有必要在这里问问?你不相信他吗?他是否不愿意充分解释,让你没有问题? –

回答

1

在您的例子:(假设你的记录器是使用标准Java日志框架中的一个)

如果记录器被配置用于TRACE或DEBUG,那么相同的信息将被记录两次。

"REST SERVICE LOG :QUERY GENERATED FOR ADVANCED SEARCH IS : 
<query buffer>" 
"REST SERVICE LOG :QUERY GENERATED FOR ADVANCED SEARCH IS : 
<query buffer>" 

这似乎很浪费。

如果将LOGGER配置为INFO,那么该信息将被记录一次。

"REST SERVICE LOG :QUERY GENERATED FOR ADVANCED SEARCH IS : 
<query buffer>" 

如果将LOGGER配置为ERROR或FATAL等级别,则不会记录任何信息。

你在这里登录的目标是什么?

+0

因此,如果日志级别设置为调试,那么我们不必为info和debug编写日志语句? – DevG

+0

嗯...是的,但代码的作者不控制日志级别设置,因此编写代码时开发人员必须根据他或她想记录的内容编写日志语句。 – foundart