模拟Log4j输出信息
来源:互联网 发布:轻音乐软件 编辑:程序博客网 时间:2024/06/05 14:43
模拟Log4j输出信息
一直以来都觉得system.out.print输出的信息不够详细,不能像log4j那样输出日期时间,输出的类,输出的类型等等;使用[log4j][1]虽然简单,但是在很多时候我们只需要log4j的简单的打印输出功能,所以在这里我模拟log4j,写了一个简单的工具类
public class Log { protected Class<?> clazz = Log.class;//利用java反射得到class,继而可以得到类名 protected boolean date_type = false;//日期类型,true打印日期时间,false打印日期 protected int log_level = 1;//输出等级 //protected static int min_level = 1;//能输出的最小等级等级 //protected static int max_level = 1;//能输出的最大等级等级 public static final int LOG_LV_INFO = 3; public static final int LOG_LV_DEBUG = 2; public static final int LOG_LV_ERROR = 1; public Log() { } public Log(Class<?> clazz) { this.clazz = clazz; this.date_type = false; this.log_level = LOG_LV_INFO; } public Log(Class<?> clazz, boolean date_type) { this.clazz = clazz; this.date_type = date_type; this.log_level = LOG_LV_INFO; } public Log(Class<?> clazz, boolean date_type, int LV) { this.clazz = clazz; this.date_type = date_type; this.log_level = LV; } public void out(String msg, Exception e){ if(date_type == true) { System.out.println("[" + Dates.currentDateTime() + "] - [Exception] - [" + clazz.getSimpleName() +"] " + msg + " : " + e.getMessage()); } else { System.out.println("[" + Dates.currentDate() + "] - [Exception] - [" + clazz.getSimpleName() +"] " + msg + " : " + e.getMessage()); } e.printStackTrace(); } public /*synchronized*/ void out(String str) { String outStr; if(date_type == true) { outStr = "[" + Dates.currentDateTime() + "]-"; } else { outStr = "[" + Dates.currentDate() + "]-"; } outStr += "[" + clazz.getSimpleName() + "]-"; switch (log_level) { case 3: outStr += "[info]-";break; case 2: outStr += "[debug]-";break; case 1: outStr += "[error]-";break; default: break; } outStr += "[" + Thread.currentThread().getName() + "] " + str; System.out.println(outStr); } /** * <p>模拟log4j对象映射输出</p> * 通过匹配{},映射传入的每个对象<br> * 知识点:Object...obj 该用法是JDK1.7的新特性,可以传入多个不同类型的对象 * <pre> * log.out("A={},B={}{}","a","b",e,1,111) * = ... A={a},B={b}{Exception} 1 111 * </pre */ public /*synchronized*/ void out(String str, Object...obj) { for (int i = 0; i < obj.length; i++) { if(null != obj[i]){ if(str.contains("{}")){ int begin_index = str.indexOf("{}"); str = str.substring(0, begin_index + 1) + obj[i].toString() + str.substring(begin_index + 1, str.length()); } else { str += " " + obj[i].toString(); } } } out(str); }
其中的Dates是我自己写的时间工具类,下面是使用方法,和log4j很相似
public class Test { private static final Log log = new Log(Test.class,false,Log.LOG_LV_DEBUG); public static void main(String[] args) { Log logger = new Log(Test.class); logger.out("123"); log.out("A={},B={},C={}{}","a","b","c",1,2); }
输出结果是:
[2015-08-21]-[Test]-[info]-[main] 123
[2015-08-21]-[Test]-[debug]-[main] A={a},B={b},C={c}{1} 2
当然也可以模拟log4j,通过properties配置文件获取date_type,log_level等属性,也可以利用IO输出成log文件
0 0
- 模拟Log4j输出信息
- log4j 输出信息参数配置
- log4j输出信息到mongodb
- log4j输出信息到mongodb
- Log4j具体输出信息级别配置方法
- log4j 输出完整的Exception信息
- 把log4j日志信息输出到数据库
- Log4j具体输出信息级别配置方法
- Log4j具体输出信息级别配置方法
- ibatis配置log4j输出sql日志信息
- ibatis配置log4j输出sql日志信息
- java 用log4j输出日志信息
- log4j日志信息输出文件配置
- 【mongodb】 log4j输出信息到mongodb
- Log4j具体输出信息级别配置方法
- log4j 输出完整的Exception信息
- ibatis配置log4j输出sql语句等日志信息
- ibatis配置log4j输出sql语句等日志信息
- Android HandlerThread 完全解析
- hdu2955-Robberies(01背包 概率 )
- Hadoop基础之---配置
- C查找算法——二分查找
- IBM服务器代理商创业之路①
- 模拟Log4j输出信息
- hdu1284-钱币兑换问题(简单dp)
- gdb调试list 、vector等容器
- 对于引用实现接口的类的对象
- mfc 打开指定文档
- gdb调试错误:No symbol table is loaded. Use the "file" command.
- quagga实现 isis路由(2)
- QT界面,按钮,Label背景图片设置方法
- zoj 3885 The Exchange of Items 最小费用最大流