基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
前言:
本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog)。
该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便快捷,简单实用,没有使用缓冲区,日志写出操作都是同步操作。
很早就想过要写两个日志记录器,一个用于大项目(logGuide),解决多线程模型下的日志记录并发性能问题;一个是基于Java的logging库写的简单同步日志记录,适合小项目,简单、便捷。
之前写过一个logGuide,该日志记录系统没有使用任何第三方库,也没有使用Java自带的logging库,并且首次使用了缓冲区来解决由于日志数量过大导致的项目死锁问题,后来使用了logback,觉得现在的日志记录框架已经很全面了,所以不再继续写下去了。
一、实现功能
1、基于java.util.logging
2、四种不同等级的日志记录
3、单线程下不需要使用当前类的class作为初始化参数,用以提高性能
4、线程池模型下必须使用当前类的class作为初始化参数(与其他日志记录框架相同)以此来保证日志记录中的正确的方法堆栈轨迹
5、基于properties的简单配置
6、配置支持控制是否开启控制台、文件的日志输出以及日期输出格式
7、可设置自定义等级的日志输出到文件、控制台
二、配置日志记录
配置文件名必须为:logconf.properties
#日志名称
logName=测试
#是否开启日志
log=true
#日志记录等级
logLevel=all
#是否在控制台显示消息
consoleLog=true
#控制台显示的日志级别(显示全部)
consoleLogLevel=all
#是否开启日志文件
fileLog=true
#日志文件记录等级(全部)
fileLogLevel=all
#日志文件路径
filelogPath=log.log
#是否接着上次的文件继续写出日志消息
fileAppend=true
#日期格式
dateFormat=yyyy-MM-dd HH:mm:ss
三、日志的使用
可以使用两种方式初始化
Logger log=BaseLogger.getLogger();
Logger log2=BaseLogger.getLogger(LogTest.class);
不同等级的日志可以调用专用的记录方法也可以调用log()方法来记录不同等级的日志
日志记录器通用接口:
public void debug(String msg);
public void warn(String msg);
public void err(String msg);
public void info(String msg);
public void log(String level, String msg);
public void debug(String msg, Throwable thrown);
public void warn(String msg, Throwable thrown);
public void err(String msg, Throwable thrown);
public void info(String msg, Throwable thrown);
public void log(String level, String msg, Throwable thrown);
public void debug(String className, String methodName,String msg);
public void warn(String className, String methodName,String msg);
public void err(String className, String methodName,String msg);
public void info(String className, String methodName,String msg);
public void log(String className, String methodName,String level, String msg);
public void debug(String className, String methodName,String msg, Throwable thrown);
public void warn(String className, String methodName,String msg, Throwable thrown);
public void err(String className, String methodName,String msg, Throwable thrown);
public void info(String className, String methodName,String msg, Throwable thrown);
四、项目地址及下载地址
github:稍后
下载地址:http://download.csdn.net/detail/eguid_1/9808783
基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)的更多相关文章
- 深入分析Java的内置日志API(java.util.logging)(一)
简介 任何的软件系统,日志都是非常重要的一部分.良好统一的日志规范会大大提高应用程序的可维护性.可靠性,并进而提高开发效率,指导业务.在早期,Java工程师往往都是利用 System.err.pr ...
- 通配置文件的方式控制java.util.logging.Logger日志输出
转自:http://zochen.iteye.com/blog/616151 简单的实现了下利用JDK中类java.util.logging.Logger来记录日志.主要在于仿照log4j方式用配置文 ...
- Java日志组件1---Jdk自带Logger(java.util.logging.Logger)
最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...
- java.util.logging的使用
秉承着某种执念我今天决定不用Logback而是和Java的logging肛到底,现在总结一下研究成果: 日志等级 日志等级有七种,severe,warning,info,fine,finer,fine ...
- 为什么使用SLF4J比使用log4j或者java.util.logging更好
1.SLF4j是什么? SLF4J 并没有真正地实现日志记录,它只是一个允许你使用任何java日志记录库的抽象适配层. 如果你正在编写内部或者外部使用的API或者应用库的话,如果使用了slf4j,那么 ...
- java.util.logging
我们目前记录日志用的最多的就是Apache的log4j,其实java.util本身也提供日志记录功能,即java.util.logging,值得关注的就是它的等级与log4j的等级有所不同: 首先我们 ...
- Java日志工具之java.util.logging.Logger
今天总结下JDK自带的日志工具Logger,虽然它一直默默无闻,但有时使用它却比较方便.更详细的信息可以查看JDK API手册,本文只是简单示例入门. 创建Logger 我们可以使用Logger的工厂 ...
- Java 原生日志 java.util.logging
简介 Java 中的 Logging API 让 Java 应用可以记录不同级别的信息,它在debug过程中非常有用,如果系统因为各种各样的原因而崩溃,崩溃原因可以在日志中清晰地追溯,下面让我们来看看 ...
- Java程序日志:java.util.logging.Logger类
一.Logger 的级别 比log4j的级别详细,全部定义在java.util.logging.Level里面.各级别按降序排列如下:SEVERE(最高值)WARNINGINFOCONFIGFINEF ...
随机推荐
- Java--向数据库添加txt文件中的批量数据
大家可能会遇到这样的问题,在做一个项目时需要操作数据库,需要有大量的数据需要导入到数据库中,这部分数据存到了txt文档中(可以把Word文档中的数据弄到txt文档),总不能每一条数据都复制黏贴到数据库 ...
- mysql 优化方法
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...
- SpringMVC结合ajaxfileupload文件无刷新上传
jQuery没有提供ajax的文件上传,我们可以通过ajaxfileupload实现ajax文件的上传.其实ajaxfileupload文件上传特别的简单.下面就演示一下在SpringMVC中实现aj ...
- Java中的WebService服务
一.在本地发布一个webservice服务 1.使用jdk中的 javax.xml.ws.Endpoint 类的 static Endpointpublish(Stringaddress,Object ...
- cas错误:org.jasig.cas.client.validation.TicketValidationException: No principal was found in the response from the CAS server.
这个问题困扰了我好几天,最终被这个哥们解决了,具体请参考:http://www.oschina.net/question/252484_149958?sort=time
- 0基础搭建Hadoop大数据处理-初识
在互联网的世界中数据都是以TB.PB的数量级来增加的,特别是像BAT光每天的日志文件一个盘都不够,更何况是还要基于这些数据进行分析挖掘,更甚者还要实时进行数据分析,学习,如双十一淘宝的交易量的实时展示 ...
- 软件开发的一些"心法"
从事软件开发也有好几年了,和一开始那个懵懵懂懂的小菜鸟相比,自己也感觉到了一些变化. 也许是熟能生巧, 趟过很多坑,但核心的绝不是这些细节的东西. 打个比方,如果说对某种语言的特性和技巧的掌握属于身法 ...
- 用ng-view创建单页APP
我们假设我们有一个单页面的程序,并且想为这个页面添加动画效果.点击某一个链接会将一个试图滑出,同时将另一个试图滑入. 我们将会使用: 使用 ngRoute 来为我们的页面路由 使用 ngAnimate ...
- 谈谈我的session跨域处理方法
情景:公司的一个网站有一个模块(测试模块)需要单独用另外的一个域名(www.btest.com)去访问,即网站需要用两个不同的域名去访问,如首页(www.abc.com)和测试模块(www.xyz.c ...
- 门面(Facade)模式
门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个 ...