通配置文件的方式控制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 ...
随机推荐
- python爬虫实战——5分钟做个图片自动下载器
python爬虫实战——图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要, ...
- Django REST Framework JWT提供的登录签发的视图
Django REST Framework JWT提供了一个视图.在我们登录的时候,会校验用户名.密码是否正确.如果信息无误,可以返回一个JWT token.就可以简单地实现了记录用户登录状态. 用法 ...
- C++编译常见错误
error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To di ...
- MFC宏常识
1.宏就是用宏定义指令#define定义一个标识符,用它来表示一个字符串或一段源代码. MFC宏作为MFC类库的一个组成部分在MFC应用程序中经常出现. MFC宏在路径 ".../Micro ...
- 云联云通讯报错:应用与模板id不匹配,解决方法
<statusMsg>应用与模板id不匹配</statusMsg> 这种一般是后端服务器上配置的APP ID和模板ID所属的APP不一致造成的 找到发送模板短信的方法,修改ap ...
- 【JBPM4】流程任务变量存取
任务变量与流程变量的操作相同,前者帮定任务ID,后者绑定流程ID. 添加任务变量 //创建流程引擎 ProcessEngine processEngine = Configuration.getPro ...
- W3School WebService教程
http://www.w3school.com.cn/webservices/index.asp
- 封装CSS动画
写在前面:感谢腾讯课堂与妙味课堂的移动端公开课 对于需要设置动画的元素需要提前设置css()样式,这样数据才会被记录起来. function css(ele, attr, val) { if (/ro ...
- bzoj 1407 扩展欧几里德
思路:枚举洞穴个数,用扩展欧几里德暴力判断没两个人的周期. #include<bits/stdc++.h> #define LL long long #define fi first #d ...
- spring 以及 spring mvc 中常用注解整理
spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...