通配置文件的方式控制java.util.logging.Logger日志输出
转自:http://zochen.iteye.com/blog/616151
简单的实现了下利用JDK中类java.util.logging.Logger来记录日志。主要在于仿照log4j方式用配置文件来配置日志的输出。网络上关于如何使用java.util.logging.Logger的文章很多,但是没有完整的如何通过配置配置文件来达到控制日志输出的资料。本文的目的在于此,欢迎拍砖。 
  上码。。。
1.首先封装了个LogManager。该类的主要作用就是static块中的代码,意在读取properties文件,初始化日志属性。
- import java.io.IOException;
 - import java.io.InputStream;
 - import java.util.logging.Logger;
 - public class LogManager {
 - // 初始化LogManager
 - static {
 - // 读取配置文件 (这边也可以使用文件流)
 - ClassLoader cl = LogManager.class.getClassLoader();
 - InputStream inputStream = null;
 - if (cl != null) {
 - inputStream = cl.getResourceAsStream("log.properties");
 - } else {
 - inputStream = ClassLoader
 - .getSystemResourceAsStream("log.properties");
 - }
 - java.util.logging.LogManager logManager = java.util.logging.LogManager
 - .getLogManager();
 - try {
 - // 重新初始化日志属性并重新读取日志配置。
 - logManager.readConfiguration(inputStream);
 - } catch (SecurityException e) {
 - System.err.println(e);
 - } catch (IOException e) {
 - System.err.println(e);
 - }
 - }
 - /**
 - * 获取日志对象
 - * @param clazz
 - * @return
 - */
 - public static Logger getLogger(Class clazz) {
 - Logger logger = Logger
 - .getLogger(clazz.getName());
 - return logger;
 - }
 - }
 
2.在需要记录日志的地方,通过LogManager.getLogger()方法得到Logger对象,然后调用其记录日志的方法记录日志。这里,我记录错误堆栈信息是用的 log(Level level, String msg, Throwable thrown) 。
贴出我的properties配置文件内容,其中handlers属性一定别忘了,我就因为缺少这个属性花费了很多时间找原因。
- #Level的五个等级SEVERE(最高值) 、WARNING 、INFO 、CONFIG 、FINE 、FINER 、FINEST(最低值) 。这个不同于log4j
 - #为 Handler 指定默认的级别(默认为 Level.INFO)。
 - java.util.logging.ConsoleHandler.level=INFO
 - # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.SimpleFormatter)。
 - java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
 - # 为 Handler 指定默认的级别(默认为 Level.ALL)。
 - java.util.logging.FileHandler.level=INFO
 - # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter)。
 - java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
 - # 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。
 - java.util.logging.FileHandler.limit=1024000
 - # 指定有多少输出文件参与循环(默认为 1)。
 - java.util.logging.FileHandler.count=1
 - # 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 "%h/java%u.log")。
 - java.util.logging.FileHandler.pattern=C:/SSLog%u.log
 - # 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。
 - java.util.logging.FileHandler.append=true
 - handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler
 
这样配置后还有一个缺陷,日志文件累积到指定的大小时,将会被重新创建,也就是之前的日志信息会丢失,但是不设置大小的话会导致单个文件过大。关于这个问题还没有花时间去细究,以下这篇博文应该能解决这一问题。 
为java.util.logging自定义文件处理器及日志输出格式
通配置文件的方式控制java.util.logging.Logger日志输出的更多相关文章
- 【java】java自带的java.util.logging.Logger日志功能
		
偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...
 - java.util.logging.Logger日志生成过程浅析 (转)
		
http://www.tuicool.com/articles/vy6Zrye ****************************************** java.util.logging ...
 - Java日志工具之java.util.logging.Logger
		
今天总结下JDK自带的日志工具Logger,虽然它一直默默无闻,但有时使用它却比较方便.更详细的信息可以查看JDK API手册,本文只是简单示例入门. 创建Logger 我们可以使用Logger的工厂 ...
 - java.util.logging.Logger 使用详解
		
概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...
 - 2.java.util.logging.Logger使用详解
		
一.java.util.logging.Logger简介 java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着, 其实 ...
 - java.util.logging.Logger使用详解 (转)
		
http://lavasoft.blog.51cto.com/62575/184492/ ************************************************* java. ...
 - java.util.logging.Logger使用具体解释
		
java.util.logging.Logger不是什么新奇东西了,1.4就有了,但是由于log4j的存在,这个logger一直沉默着,事实上在一些測试性的代码中,jdk自带的logger比log4j ...
 - java.util.logging.Logger基础
		
1. 定义 java.util.logging.Logger是Java自带的日志类,可以记录程序运行中所产生的日志.通过查看所产生的日志文件,可以分析程序的运行状况,出现异常时,分析及定位异常. 2. ...
 - Java日志介绍(1)-java.util.logging.Logger
		
java.util.logging.Logger是JDK自带的日志工具,其简单实现了日志的功能,不是很完善,所以在实际应用中使用的比较少.本文直接用代码演示其使用方法,文中所使用到的软件版本:Java ...
 
随机推荐
- Load balancer does not have available server for client:xxx
			
今天在搭建一个springcloud项目在搭建以zuul为网关的时候,项目抛了一个异常, com.netflix.zuul.exception.ZuulException: Forwarding er ...
 - JS页面之间传值
			
父页面与子页面之间有多种传值的方式: 第一种,通过window.open的方法打开一个新的页面,在新的页面里面通过window.opener来获取对象,以下为实例 父页面: function open ...
 - JS判断客户端是否是iOS或者Android手机移动端
			
var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...
 - vue-cli脚手架引入element UI的正确打开方式
			
element UI官网教程:http://element-cn.eleme.io/#/zh-CN/component/quickstart 1.完整引入,直接了当,但是组件文件不是按需加载,造成多余 ...
 - django使用用户名或手机号码登录
			
django有自己的认证系统,会自动根据用户名和密码进行验证.如果需要使用用户名或手机登录的话,需要重写django的认证后台,并且设置到配置文件中. 重写django的认证后台 class User ...
 - POJ 2387 Til the Cows Come Home(dijkstra裸题)
			
题目链接:http://poj.org/problem?id=2387 题目大意:给你t条边(无向图),n个顶点,让你求点1到点n的最短距离. 解题思路:裸的dijsktra,注意判重边. 代码: # ...
 - Go语言标准包之用io包模拟curl
			
最后一个书上的标准包,但真正学习的路才开始... package main import ( "bytes" "fmt" "os" &quo ...
 - PHP7.3发布啦
			
作为PHP5的最后一个版本,也是目前使用最广泛的PHP版本,PHP 5.6始于公元2014年(不是1804年,嘿嘿),其第一个测试版PHP 5.6 alpha 1版于2014年1月发布.随机产生了第一 ...
 - 如何使用 Java 对 List 中每个对象元素按时间顺序进行排序
			
如何使用 Java 对 List 中每个对象元素按时间顺序进行排序 Java 实现 import java.text.SimpleDateFormat; import java.util.ArrayL ...
 - EL表达式无法显示Model中的数据
			
后台程序通过Debug都能正常返回数据并封装到Model中.而在前台通过EL表达式取值时却是原样输出,如${cart.num}... ///展现我的购物车 @RequestMapping(" ...