zoukankan      html  css  js  c++  java
  • java.util.logging.Logger基础

    1. 定义

      java.util.logging.Logger是Java自带的日志类,可以记录程序运行中所产生的日志。通过查看所产生的日志文件,可以分析程序的运行状况,出现异常时,分析及定位异常。

    2.简单的例子

    import java.io.IOException;  
    import java.io.PrintWriter;  
    import java.io.StringWriter;  
    import java.text.SimpleDateFormat;  
    import java.util.Date;  
    import java.util.logging.ConsoleHandler;
    import java.util.logging.FileHandler;  
    import java.util.logging.Formatter;  
    import java.util.logging.Level;  
    import java.util.logging.LogRecord;  
    import java.util.logging.Logger;
    
    public class TestLogger { 
         public static void main(String[] args) throws IOException{  
                Logger log = Logger.getLogger(TestLogger.class.getName());   
                //设置在Console中的输出  
                ConsoleHandler consoleHandler =new ConsoleHandler(); 
                consoleHandler.setLevel(Level.ALL); 
                log.addHandler(consoleHandler); 
                
                //设置输出到文件中
                FileHandler fileHandler = new FileHandler("testlog.log", true);  
                fileHandler.setLevel(Level.SEVERE);  
                fileHandler.setFormatter(new Formatter(){  
                                            public String format(LogRecord record){  
                                                SimpleDateFormat sd = new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss]");    
                                                String d = sd.format(new Date());    
                                                return d + record.getLevel() + ":" + record.getMessage();  
                                            }  
                                         });  
                log.addHandler(fileHandler);  
                try {  
                    throw new Exception("bbb");  
                }  
                catch (Exception e) {  
                    StringWriter sw = new StringWriter();  
                    e.printStackTrace(new PrintWriter(sw));  
                    log.severe(sw.toString());  
                }  
                log.info("aaa");  
            }  
    }

    3.Logger的级别

      Logger的级别按降序排列如下:
    • SEVERE(最高值)
    • WARNING
    • INFO
    • CONFIG
    • FINE
    • FINER
    • FINEST(最低值)
      此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。
     
      logger默认的级别是INFO,比INFO更低的日志将不显示。
     
      我们可以通过设置Logger的级别来控制Logger所记录的内容,等级低于所设置的将不会被记录。

    4.Handler的使用

      使用Handler可以将日志信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。

      java.util.logging.Handler
           java.util.logging.MemoryHandler 
           java.util.logging.StreamHandler
           java.util.logging.ConsoleHandler 
           java.util.logging.FileHandler
           java.util.logging.SocketHandler

      例子中用到的了ConsoleHandler和FileHandler,控制将日志信息输出到Console和记录到文件中,其它的需要用时可以再去了解。

    5.Formatter的使用

      Handler 可以关联一个 Formatter,用于将Logger记录的日志的内容做格式化的输出。

      上面的例子中就定义了一个Formatter,格式化了日志的内容:

      [2015-04-19 19:12:43]SEVERE:java.lang.Exception: bbb
         at logger.TestLogger.main(TestLogger.java:43)

    6.异常的处理 

      可以看到上面例子中处理异常时的代码: 

    catch (Exception e) {  
                    StringWriter sw = new StringWriter();  
                    e.printStackTrace(new PrintWriter(sw));  
                    log.severe(sw.toString());  
                } 

      我们希望在日志中记录异常的轨迹,但是printStackTrace默认是不会产生字符串的,却可以接受一个PrintWriter的参数,就可以通过PrintWriter的toString方法来获取异常信息了。

      

     
  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    玩转算法2.3常见的算法复杂度分析
    数组中的逆序对
    一些基本的代码模板
    230. Kth Smallest Element in a BST
    42. Trapping Rain Water
    api token
    仿百度查询
    baidu jsonp
    How to fix Error: laravel.log could not be opened?
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4439719.html
Copyright © 2011-2022 走看看