Java内置Logger的项目级完整代码使用流程
来源:互联网 发布:吸入麻醉药七氟烷mac值 编辑:程序博客网 时间:2024/05/23 13:11
此前因其它事务,已经有很长时间没作Java开发。近日要用Java构建一个Html5移动小程序后台。
因为是小程序嘛,用于移动端,处理客户端请求都是返回json,自然就用不上SSH那么高大尚,那么耗内存,那么复杂,那么开发效率慢 的框架。
同时,也想 回归本原,写一些简单代码来架建一个 restful 框架雏型。
本原想用log4j构建log系统,下载最新版,一看引包达 1M 多,恼了,不就是写条log,用得 着吗?!我整个项目把自己的代码打成jar包还没有一兆呢!
又看了下common-logging,它要不就是 没干啥事,要不就是 需要挂载其它包。
参考了网上的资料,决定自己封装一个JDK Log
下面代码已经调好了,不客气! (如果你也有类似的看法)
1,新建 SysLog.java ,键入下面的代码。用于 getLogger
2,新建 SysLogFormatter.java,用于格式化输入。我想你是不会满意jdk的默认log输出。这是我从SimpleFormatter摸索出来的。
因为是小程序嘛,用于移动端,处理客户端请求都是返回json,自然就用不上SSH那么高大尚,那么耗内存,那么复杂,那么开发效率慢 的框架。
同时,也想 回归本原,写一些简单代码来架建一个 restful 框架雏型。
本原想用log4j构建log系统,下载最新版,一看引包达 1M 多,恼了,不就是写条log,用得 着吗?!我整个项目把自己的代码打成jar包还没有一兆呢!
又看了下common-logging,它要不就是 没干啥事,要不就是 需要挂载其它包。
参考了网上的资料,决定自己封装一个JDK Log
下面代码已经调好了,不客气! (如果你也有类似的看法)
1,新建 SysLog.java ,键入下面的代码。用于 getLogger
2,新建 SysLogFormatter.java,用于格式化输入。我想你是不会满意jdk的默认log输出。这是我从SimpleFormatter摸索出来的。
3,新建 logger.properties,放到 src 或 WEB-INF 目录下。用于格式化输出,和输出到file
SysLog.java
import java.io.InputStream;import java.io.PrintWriter;import java.io.StringWriter;import java.util.Date;import java.util.logging.Formatter;import java.util.logging.LogManager;import java.util.logging.LogRecord;import java.util.logging.Logger;public class SysLog {private static SysLog log = null;public static SysLog instance() {if (log == null) {//synchronized SysLog.classlog = new SysLog();}return log;}public SysLog() {InputStream is = null; try { LogManager.getLogManager().readConfiguration(SysLog.class.getClass().getResourceAsStream("/logger.properties")); } catch (Exception e) { System.err.println("input properties file is error.\n" + e.toString()); e.printStackTrace(); } finally { if( is != null ) { try { is.close();} catch (Exception e2) {e2.printStackTrace();} } }}public Logger get_loger(Class<?> clazz) {return get_loger(clazz.getName());}public Logger get_loger(String clazz) {// LogManager.getLogManager().getLogger(name)return Logger.getLogger(clazz);}public static Logger getLoger(Class<?> clazz) {return instance().get_loger(clazz);}public static Logger getLoger(String clazz) {return instance().get_loger(clazz);}}
SysLogFormater.java
package sx.cms.util;import java.io.PrintWriter;import java.io.StringWriter;import java.util.Date;import java.util.logging.Formatter;import java.util.logging.LogRecord;/** * this code was from copy from java.util.logging.SimpleFormatter */public class SysLogFormatter extends Formatter { //private static final String format = "%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%6$s%n";//private static final String format = "%1$tY/%1$tb/%1$td/%1$Tp/%1$tl:%1$tM:%1$tS %2$s[%4$s]\t%5$s%6$s%n";private static final String format = "%1$tY/%1$tm/%1$td/%1$tH:%1$tM:%1$tS %2$s[%4$s]\t%5$s%6$s%n"; private final Date dat = new Date(); public synchronized String format(LogRecord record) { dat.setTime(record.getMillis()); String source; if (record.getSourceClassName() != null) { source = record.getSourceClassName(); if (record.getSourceMethodName() != null) { source += " " + record.getSourceMethodName(); } } else { source = record.getLoggerName(); } String message = formatMessage(record); String throwable = ""; if (record.getThrown() != null) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); pw.println(); record.getThrown().printStackTrace(pw); pw.close(); throwable = sw.toString(); } return String.format(format, dat, source, record.getLoggerName(), //record.getLevel().getLocalizedLevelName(), record.getLevel().getName(), message, throwable); }}
logger.properties
handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandlerjava.util.logging.ConsoleHandler.formatter = project.your.SysLogFormatterjava.util.logging.ConsoleHandler.level = CONFIG# Level.INFO #log out filejava.util.logging.FileHandler.pattern = my.log%g.log java.util.logging.FileHandler.formatter = sx.cms.util.SysLogFormatterjava.util.logging.FileHandler.limit = 104857600java.util.logging.FileHandler.count = 3java.util.logging.FileHandler.append = truejava.util.logging.FileHandler.level = INFO LOGGER.level = WARNING
测试和使用
//测试和使用public static void main(String[] args) {Logger log = SysLog.getLoger(Main.class);log.info("log 中国" + System.currentTimeMillis());}
0 0
- Java内置Logger的项目级完整代码使用流程
- java Logger 的使用
- Java内置Logger详解
- java Logger 的使用(转藏)
- java Logger 的使用(转藏)
- java.util.logger的使用
- 一个完整的项目流程
- Java使用JNI调用C++的完整流程
- java Logger 的使用与配置
- java Logger 的使用与配置2
- java Logger 的使用与配置
- java Logger 的使用与配置2
- Java中自带的Logger使用
- Java模块 -- Logger日志的使用
- java.util.logging.Logger的使用总结
- java.util.logging.logger的使用
- 一个完整的项目管理流程
- 一个完整的项目管理流程
- 监测redis服务器运行情况 哨兵工具
- 剑指offer——调整数组顺序使奇数位于偶数前面
- Java进阶(九)正则表达式
- 欢迎加入XiyouLinuxGroup邮件列表
- myeclipse 调大jvm 内存
- Java内置Logger的项目级完整代码使用流程
- 解决微云登陆出现wns login error的问题
- Makefile学习笔记<显示/隐藏命令 忽略命令错误>
- java线程池
- 编号范围维护综述
- spring容器的DI(依赖注入)xml版
- Node.js实战 建立简单的Web服务器
- [摘抄-Socket-学习中]socket监听本地IP(INADDR_ANY)以及获取本地IP地址
- 75. Sort Colors