java.util.logging.Logger基础

时间:2023-02-16 21:17:31

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方法来获取异常信息了。

  

 

java.util.logging.Logger基础的更多相关文章

  1. java.util.logging.Logger基础教程

    从JDK1.4开始即引入与日志相关的类java.util.logging.Logger,但由于Log4J的存在,一直未能广泛使用.综合网上各类说法,大致认为: (1)Logger:适用于小型系统,当日 ...

  2. java.util.logging.Logger 使用详解

    概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...

  3. Java日志工具之java.util.logging.Logger

    今天总结下JDK自带的日志工具Logger,虽然它一直默默无闻,但有时使用它却比较方便.更详细的信息可以查看JDK API手册,本文只是简单示例入门. 创建Logger 我们可以使用Logger的工厂 ...

  4. 2.java.util.logging.Logger使用详解

    一.java.util.logging.Logger简介 java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着, 其实 ...

  5. java.util.logging.Logger使用详解 (转)

    http://lavasoft.blog.51cto.com/62575/184492/ ************************************************* java. ...

  6. java.util.logging.Logger使用具体解释

    java.util.logging.Logger不是什么新奇东西了,1.4就有了,但是由于log4j的存在,这个logger一直沉默着,事实上在一些測试性的代码中,jdk自带的logger比log4j ...

  7. 通配置文件的方式控制java.util.logging.Logger日志输出

    转自:http://zochen.iteye.com/blog/616151 简单的实现了下利用JDK中类java.util.logging.Logger来记录日志.主要在于仿照log4j方式用配置文 ...

  8. Java日志组件1---Jdk自带Logger(java.util.logging.Logger)

    最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...

  9. 【java】java自带的java.util.logging.Logger日志功能

    偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...

随机推荐

  1. windows系统下简单nodej.s环境配置 安装

    国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 htt ...

  2. 测试了几款 C# 脚本引擎 , Jint , Jurassic , Nlua, ClearScript

    测试类 public class Script_Common { public string read(string filename) { return System.IO.File.ReadAll ...

  3. go git 安装配置与使用 (windows 7 64bit)

    go语言安装使用第三方库方式一般采用 go get github.com/.../...  命令.例如: go get github.com/astaxie/beego 1.错误情况一: packag ...

  4. mfs-用户

    http://blog.csdn.net/liuyunfengheda/article/details/5260278 MFS总结 http://bbs.chinaunix.net/thread-16 ...

  5. crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理

    在工作中要用到android,然后进行网络请求的时候,打算使用httpClient. 总结一下httpClient的一些基本使用. 版本是4.2.2. 使用这个版本的过程中,百度很多,结果都是出现的o ...

  6. 缓存服务—Redis

    Redis 简介Redis 是一个开源(BSD 许可)的.内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 为什么要用 Redis 在高并发场景下,如果需要经常连接结果变动频繁的数据库, ...

  7. C常量与控制语句

    在C语言中定义常量的两种方式 在C语言编程中定义常量有两种方法. const关键字 #define预处理器 1. const关键字 const关键字用于定义C语言编程中的常量. const float ...

  8. 两场CF

    分别是正规赛998和虚拟赛935 998我神速A了前三题之后挂了,第四题是一个打表找规律题然而我并没有想到打表... 然后靠着速度拿到470名,上了蓝名.这告诉我们:输入数据是一个数/两个数(noip ...

  9. h5外部浏览器直接调起app

    1. 安卓端: 其中,scheme必须是小写的,同时要求H5必须是“<a href="appback://">启动应用程序</a> ” 2. h5端完整示例 ...

  10. 【LOJ】&num;2072&period; 「JSOI2016」独特的树叶

    题解 干脆题解套题解好了 毕竟我的hash方法是抄小迪的 https://www.cnblogs.com/RabbitHu/p/9165770.html 小迪太巨了%%% 之前模数是八位的WA了几个点 ...