Java如何进行条件记录?

在我们的应用程序中记录一些消息时,目的可能是为了调试目的而创建日志。为了最大程度地减少这些调试消息的影响,我们可以使用条件日志记录。为此,我们需要对每个对logger方法的调用加上一个Logger.isLoggable(Level level)检查。

该检查将确保仅将具有适当级别的日志记录到我们的应用程序日志中。这将自动打开和关闭我们的应用程序日志,而无需触及代码。

package org.nhooo.example.util.logging;

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.Date;

public class ConditionalLogging {
    private Logger logger = Logger.getLogger(ConditionalLogging.class.getName());

    public static void main(String[] args) {
        ConditionalLogging demo = new ConditionalLogging();
        demo.executeMethod();
    }

    // 在这种方法中,我们将检查Logger级别是否等于
    //在进行实际日志记录之前,请输入Level.INFO。这将最小化
    // 日志的影响,如果下次我们创建关卡
    // 到Level.WARNING或Level.SEVERE,以便这些消息不会
    // 记录了。
    public void executeMethod() {
        if (logger.isLoggable(Level.INFO)) {
            logger.info("Entering executeMethod() at : " + new Date());
        }

        // 方法主体
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print(i * j + " ");
            }
            System.out.println("");
        }

        if (logger.isLoggable(Level.INFO)) {
            logger.info("Exiting executeMethod() at  : " + new Date());
        }
    }
}

上面的示例代码的结果如下所示:

28 Apr 09 6:08:55 org.nhooo.example.util.logging.ConditionalLogging executeMethod
INFO: Entering executeMethod() at : Tue Apr 28 06:08:55 SGT 2009
0 0 0 0 0 
0 1 2 3 4 
0 2 4 6 8 
0 3 6 9 12 
0 4 8 12 16 
28 Apr 09 6:08:55 org.nhooo.example.util.logging.ConditionalLogging executeMethod
INFO: Exiting executeMethod() at  : Tue Apr 28 06:08:55 SGT 2009