基于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 ...
随机推荐
- C#网络程序设计(2)Socket基础编程
本节介绍如何使用基础Socket实现TCP通信. (1)Socket详细介绍: Socket的英文原义是"孔"或"插座".通常称作"套 ...
- SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)
本位出处:http://www.cnblogs.com/wy123/p/6770258.html 统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见 ...
- 导出Mysql数据库中的数据
使用mysqldump 指令: D:\>mysqldump -u root -proot bookStore>bookStore.sql
- bzoj4816 [Sdoi2017]数字表格
Description Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师 ...
- Laravel 5.2 教程 - 迁移
一.简介 迁移(Migrations)是一种数据库的版本控制.可以让团队在修改数据库结构的同时,保持彼此的进度一致.迁移通常会和 结构生成器 一起使用,可以简单的管理数据库结构. 下面以创建学生表的迁 ...
- DIV+CSS 规范命名集合
一: 命名规范说明: 1).所有的命名最好都小写 2).属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="d ...
- 查看当前用户名称:whoami命令
没什么可讲的,就是显示当前用户名称,效果同"id -un"命令.
- hdu1213 How Many Tables 并查集的简单应用
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 简单的并查集 代码: #include<iostream> #include< ...
- event对应的各种坐标
IE8不支持的PageXY 相对于整个页面鼠标的位置 包括溢出的部分 event.pageX; event.pageY; 所有浏览器支持的: 相对于当前浏览器窗口可视区域的坐标event.clie ...
- ActionBar 通用方法
自定义actionBar布局:标题居中,左边有返回按键 <?xml version="1.0" encoding="utf-8"?> <Rel ...