1. 创建Logger对象
(1). public static Logger getLogger(String name)
为指定子系统查找或创建一个 logger。如果已经创建了具有给定名称的 logger,则返回该 logger。否则创建一个新的 logger。


2. Logger的级别
(1). 全部定义在java.util.logging.Level里面。
(2). 各级别按降序排列如下:
SEVERE(最高值)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低值)
此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。
(3). Logger默认的级别是INFO,比INFO更低的日志将不显示。
(4). Logger的默认级别定义是在jre安装目录的lib下面的logging.properties文件中:
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO


3. 简单实例
public class MyLogger { 
      public static void main(String[] args) {
            Logger logger = Logger.getLogger(MyLogger.class.getName());

            logger.setLevel(Level.ALL);

            logger.info("info level in java util logging Logger");
            logger.warning("warning level in java util logging Logger");
            logger.severe("server level in java util logging Logger");
     }
}


4. Logger的Handler
(1). Handler 对象从 Logger 中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。
(2). java.util.logging.Handler 
  java.util.logging.MemoryHandler 
  java.util.logging.StreamHandler 
  java.util.logging.ConsoleHandler 
  java.util.logging.FileHandler 
  java.util.logging.SocketHandler


(3). 例子
public class MyLogger {
       public static void main(String[] args) {
             Logger logger = Logger.getLogger(MyLogger.class.getName());
             logger.setLevel(Level.ALL);

            try {
                    FileHandler fileHandler = new FileHandler("MyLogger.log");
                    fileHandler.setLevel(Level.INFO);

                    logger.addHandler(fileHandler);
           } catch (SecurityException e) {
                   e.printStackTrace();
           } catch (IOException e) {
                  e.printStackTrace();
          }

          logger.info("info level in java util logging Logger");
          logger.warning("warning level in java util logging Logger");
          logger.severe("server level in java util logging Logger");
        }

}

输出结果见图:

004-java.util.logging.Logger使用

5. Logger的Formatter
(1). Formatter 为格式化 LogRecords 提供支持。 
一般来说,每个日志记录 Handler 都有关联的 Formatter。Formatter 接受 LogRecord,并将它转换为一个字符串。 
有些 formatter(如 XMLFormatter)需要围绕一组格式化记录来包装头部和尾部字符串。可以使用 getHeader 和 getTail 方法来获得这些字符串。
(2). LogRecord 对象用于在日志框架和单个日志 Handler 之间传递日志请求。
(3). LogRecord(Level level, String msg) 
          用给定级别和消息值构造 LogRecord。
(4). java.util.logging.Formatter 

      java.util.logging.SimpleFormatter 

      java.util.logging.XMLFormatter

(5). 例子

public class MyLogger {
       public static void main(String[] args) {
             Logger logger = Logger.getLogger(MyLogger.class.getName());
             logger.setLevel(Level.ALL);

            try {
                    FileHandler fileHandler = new FileHandler("MyLogger.log");
                    fileHandler.setLevel(Level.INFO);
                    fileHandler.setFormatter(new MyLogFormatter());
                    logger.addHandler(fileHandler);
           } catch (SecurityException e) {
                   e.printStackTrace();
           } catch (IOException e) {
                  e.printStackTrace();
          }

          logger.info("info level in java util logging Logger");
          logger.warning("warning level in java util logging Logger");
          logger.severe("server level in java util logging Logger");
        }

}

public class MyLogFormatter extends Formatter{
      public String format(LogRecord record) {
             return record.getLevel() + ":[" + record.getMessage() + "]" + System.getProperty("line.separator");
       }
}

输出结果见下图:

004-java.util.logging.Logger使用

相关文章:

  • 2022-02-15
  • 2022-12-23
  • 2021-08-08
  • 2021-11-17
  • 2021-12-23
  • 2021-06-05
  • 2021-11-08
  • 2021-10-27
猜你喜欢
  • 2021-09-18
  • 2021-07-25
相关资源
相似解决方案