转自:http://zochen.iteye.com/blog/616151

简单的实现了下利用JDK中类java.util.logging.Logger来记录日志。主要在于仿照log4j方式用配置文件来配置日志的输出。网络上关于如何使用java.util.logging.Logger的文章很多,但是没有完整的如何通过配置配置文件来达到控制日志输出的资料。本文的目的在于此,欢迎拍砖。 
  上码。。。

1.首先封装了个LogManager。该类的主要作用就是static块中的代码,意在读取properties文件,初始化日志属性。

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.util.logging.Logger;
  4. public class LogManager {
  5. // 初始化LogManager
  6. static {
  7. // 读取配置文件  (这边也可以使用文件流)
  8. ClassLoader cl = LogManager.class.getClassLoader();
  9. InputStream inputStream = null;
  10. if (cl != null) {
  11. inputStream = cl.getResourceAsStream("log.properties");
  12. } else {
  13. inputStream = ClassLoader
  14. .getSystemResourceAsStream("log.properties");
  15. }
  16. java.util.logging.LogManager logManager = java.util.logging.LogManager
  17. .getLogManager();
  18. try {
  19. // 重新初始化日志属性并重新读取日志配置。
  20. logManager.readConfiguration(inputStream);
  21. } catch (SecurityException e) {
  22. System.err.println(e);
  23. } catch (IOException e) {
  24. System.err.println(e);
  25. }
  26. }
  27. /**
  28. * 获取日志对象
  29. * @param clazz
  30. * @return
  31. */
  32. public static Logger getLogger(Class clazz) {
  33. Logger logger = Logger
  34. .getLogger(clazz.getName());
  35. return logger;
  36. }
  37. }

2.在需要记录日志的地方,通过LogManager.getLogger()方法得到Logger对象,然后调用其记录日志的方法记录日志。这里,我记录错误堆栈信息是用的 log(Level level, String msg, Throwable thrown) 。

贴出我的properties配置文件内容,其中handlers属性一定别忘了,我就因为缺少这个属性花费了很多时间找原因。

  1. #Level的五个等级SEVERE(最高值) 、WARNING 、INFO 、CONFIG 、FINE 、FINER 、FINEST(最低值)  。这个不同于log4j
  2. #为 Handler 指定默认的级别(默认为 Level.INFO)。
  3. java.util.logging.ConsoleHandler.level=INFO
  4. # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.SimpleFormatter)。
  5. java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
  6. # 为 Handler 指定默认的级别(默认为 Level.ALL)。
  7. java.util.logging.FileHandler.level=INFO
  8. # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter)。
  9. java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
  10. # 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。
  11. java.util.logging.FileHandler.limit=1024000
  12. # 指定有多少输出文件参与循环(默认为 1)。
  13. java.util.logging.FileHandler.count=1
  14. # 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 "%h/java%u.log")。
  15. java.util.logging.FileHandler.pattern=C:/SSLog%u.log
  16. # 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。
  17. java.util.logging.FileHandler.append=true
  18. handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler

这样配置后还有一个缺陷,日志文件累积到指定的大小时,将会被重新创建,也就是之前的日志信息会丢失,但是不设置大小的话会导致单个文件过大。关于这个问题还没有花时间去细究,以下这篇博文应该能解决这一问题。 
为java.util.logging自定义文件处理器及日志输出格式

通配置文件的方式控制java.util.logging.Logger日志输出的更多相关文章

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

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

  2. java.util.logging.Logger日志生成过程浅析 (转)

    http://www.tuicool.com/articles/vy6Zrye ****************************************** java.util.logging ...

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

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

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

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

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

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

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

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

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

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

  8. java.util.logging.Logger基础

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

  9. Java日志介绍(1)-java.util.logging.Logger

    java.util.logging.Logger是JDK自带的日志工具,其简单实现了日志的功能,不是很完善,所以在实际应用中使用的比较少.本文直接用代码演示其使用方法,文中所使用到的软件版本:Java ...

随机推荐

  1. 升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode” Xcode 插件安装

    升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode”  Xcode 插件安装 A:  升级10.11后Xcode 左上角模拟器选择菜单不在了   ...

  2. Fel表达式使用过程中需要注意的问题

    精度问题: 我们知道java中直接使用float和double参与的计算都可能会产生精度问题,比如0.1+0.3.1.0-0.9 等.所以一般财务系统,都会使用BigDecimal进行加减乘除. 在调 ...

  3. LeetCode解题报告—— Number of Islands & Bitwise AND of Numbers Range

    1. Number of Islands Given a 2d grid map of '1's (land) and '0's (water), count the number of island ...

  4. centos安装更新Python2.7以及pip的安装

    一.首先对相关的软件进行更新 python -V yum -y update yum groupinstall -y development yum install -y zlib zlib-dev ...

  5. Mysql 中的Text字段的范围

    mysql中text 最大长度为65,535(2的16次方–1)字符的TEXT列.如果你觉得text长度不够,可以选择 MEDIUMTEXT最大长度为16,777,215. LONGTEXT最大长度为 ...

  6. 自己编译生成k8s的rpm包

    我指的是以下几个安装包: -rw-r--r--. 1 root root 8976134 Jul 13 10:19 kubeadm-1.7.0-0.x86_64.rpm-rw-r--r--. 1 ro ...

  7. [Android] 按钮单击事件的五种写法

    在平时学习安卓的过程中,不论是看视频还是看博客,我发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.所以我想把这些写法总结一下,比较下各种写法的优劣,希望可以让自己可以灵 ...

  8. 关于Logstash中grok插件的正则表达式例子

    一.前言 近期需要对Nginx产生的日志进行采集,问了下度娘,业内最著名的解决方案非ELK(Elasticsearch, Logstash, Kibana)莫属. Logstash负责采集日志,Ela ...

  9. 【笔试题】Java 易错题精选

    笔试题 Java 易错题精选 1.写出下列程序的运行结果( )String 不变性Java 值传递 public class Test { public static void main(String ...

  10. 【剑指offer】面试题 28. 对称的二叉树

    面试题 28. 对称的二叉树 题目描述 题目:请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 解答过程 给定一个二叉树,检查它是否是镜像 ...