• 【Java学习笔记】日志操作


    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    1.简介:

    ava.util.logging,它可以对程序中的日志记录进行相当复杂的控制。例如:通过它可以指定日志的级别和日志的位置(控制台、文件、套接字、 内存缓冲区),也可以创建子记录器,通过它可以用程序控制的方式来指定想记录的内容,也可以使用配置文件来指定,而不需要去改动程序。

    2.体系:

    3.实例:

    import java.util.logging.Logger;
    import java.util.logging.Level;
    import java.util.logging.Handler;
    import java.util.logging.FileHandler;
    import java.io.IOException;
    public class LogDemo3 {
        static Logger logger = Logger.getLogger("");
        public static void main(String arg[]) {
            try {
                FileHandler fh = new FileHandler("logfile");
                logger.addHandler(fh);
            } catch(IOException e) {
                System.err.println("Cannot open log file for output");
            }
            Handler handler[] = logger.getHandlers();
            for(int i=0; i<handler.length; i++)
                handler[i].setLevel(Level.FINEST);
            logger.setLevel(Level.FINEST);
            LogDemo3 ld = new LogDemo3();
            ld.demonstrate();
        }
        LogDemo3() {
            logger.info("LogDemo3 instantiated.");
        }
        public void demonstrate() {
            logger.fine("Entering the demonstrate method.");
            for(int i=0; i<10; i++) {
                logger.finest("Loop counter: " + i);
            }
            logger.fine("Exiting the demonstrate method.");
        }
    }

    4.技巧(转载)

    java .util .logging 包提供了强大的日志输出功能,正确和有效的使用这些功能需要一些技巧:

    1. 了解不同的Level , Level .FINE , LEVEL .FINER ,LEVEL .FINEST 用来调试和跟踪程序,比如打印一些调试信息,异常等。Level .INFO 将打印信息到控制台。
    2. 使用Logger.isLoggable(Level ) 方法检测当前的Level ,以此来判断是否输出日志,日志也应该遵循需要时才输出的原则,避免生成大量的调试信息字符串,占用系统内存,影响性能。
    3. 必要时程序化的打开和关闭日志,例如在开发程序时开启大部分日志,为了查错和调试程序,在程序发布时关闭大部分日志,避免影响客户和影响程序性能。
    4. 必要时可以针对一个模块使用唯一的Logger ,也就是创建Logger 时传入子模块的名字,所有类使用同一个Logger ,避免生成太多的Logger 实例。
    5. 下边是使用日志工具的一段代码:

    package  javatest;
    import java .io.IOException;
    import java .util .logging .ConsoleHandler;
    import java .util .logging .FileHandler;
    import java .util .logging .Level ;
    import java .util .logging .Logger;
    import java .util .logging .SimpleFormatter;
    /**
    */
    public class  LoggerTest {
    //  构建Logger
    private static  Logger log  =  Logger.getLogger(LoggerTest. class .getName());
    /**  Creates a new instance of LoggerTest  */
    public  LoggerTest() {
    //  使用此方法避免生成需要输出的字符串
    if (log.isLoggable(Level .FINE)) {
                log.log(Level .FINE,  " start constructing... " );
            }
        }
    /**
         * 设置指定包的日志输出级别.
         *
         *  @param  packageName 指定的包
         *  @param  fileName 指定日志的输出文件
         *  @param level  日志输出级别
    */
    private static void  setLogLevel(String packageName, String fileName, Level level ) {
    try  {
                FileHandler fileHandler  = new  FileHandler( " %h/ " + fileName + " %u.log " );
                fileHandler.setFormatter( new  SimpleFormatter());
                ConsoleHandler consoleHandler  = new  ConsoleHandler();
                consoleHandler.setLevel(level );
                Logger.getLogger(packageName).addHandler(fileHandler);
                Logger.getLogger(packageName).addHandler(consoleHandler);
                Logger.getLogger(packageName).setLevel(level );
            }  catch  (SecurityException ex) {
                ex.printStackTrace();
            }  catch  (IOException ex) {
                ex.printStackTrace();
            }
        }    
    public static void  main(String[] args) {
    //  启用当前包的全部日志输出
            String packageName  = " javatest " ;
            setLogLevel(packageName, packageName, Level .ALL);
            LoggerTest test  = new  LoggerTest();
        }
    }

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

  • 相关阅读:
    LeetCode 1
    Thinking in Java学习杂记(第7章)
    工程优化部分概念
    Thinking in Java学习杂记(5-6章)
    Thinking in Java学习杂记(1-4章)
    python中map()和dict()的用法
    JavaWeb高级编程(下篇)
    对CSDN的理性吐槽
    CSDN博客已经打不开了
    大连交大教务一键教学评价
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822260.html
Copyright © 2020-2023  润新知