基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)

摘要:
我早就想到编写两个日志,一个用于大型项目,以解决多线程模型下并发日志性能的问题;一种是由基于Java的日志库编写的简单同步日志记录,适用于小型项目,简单方便。

前言:

本章介绍自己写的基于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)下的堆栈轨迹顺序与当前调用方法不一致问题)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql 成绩排序Java(C#)基础差异-语法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Logitech k480 蓝牙键盘连接 ubuntu 系统

  k480 能同时连接三台蓝牙设备,支持 Windows、Android、Chrome、Mac OS X 和 iOS 系统。奈何官方并不支持 Ubuntu。   有压迫就有反抗,呃...,不对,总是有办法在 Ubuntu 系统下连接 k480 的。 Ubuntu 系统下连接 k480 的方法是: 安装蓝牙工具 $sudo apt-get insta...

【转】阿里云证书资源包申请免费SSL流程(图文教程) 【免费证书申请将切换到证书资源包下】

阿里云SSL免费证书2021更新,需要在云盾证书资源包处选择免费证书扩容包,资源包个数20,新手站长网来详细说下阿里云免费SSL证书从购买到申请全过程: 阿里云免费SSL证书申请教程 2021阿里云SSL免费证书购买地址又变了,为了解决免费证书近期存在的吊销、统计等问题,自2021年起,免费证书申请将切换到证书资源包下。阿里云SSL免费证书申请分为两...

windows下 安装 rabbitMQ 及操作常用命令

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang  所以在安装rabbitMQ之前,需要先安装Erlang 。 小编使用的是otp_...

FreeMarker 在JAVA控制台应用(5)

建立一个普通的java项目:HelloFreeMarker 引入freemarker.jar包 在项目目录下建立模板目录:templates 在templates目录下,建立hello.ftl模板文件,模板内容如下:你好啊,${user},今天你的精神不错! 在src下新建com.kj.study.freemarker包,然后建立Hello.ja...

Weblogic的安装、配置与应用部署

1. Weblogic安装 1.1 Linux下安装过程 安装环境: 操作系统: redhat-release-5Server-5.4.0.3 Weblogic版本: Weblogic 9.24 1)       部署前准备: 创建weblogic用户组. groupadd weblogic useradd –g weblogic weblogic pas...

C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出

C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数 注意:在VS中调试执行时,在处理程序例程中设置断点,不会中断;会提示:无可用源,如下图: 完整示例代码:   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...