先列出项目目录以及文件功能:
com.testlog.testlog //记录日志的工具类
logger //logger工具类
testlog //对工具类的进一步格式化:logBefore() 和 loggerAfter()
uselog // 让控制台显示日志的使用
log4j.properties //放在src下面的配置文件
logger.java
package com.testlog;
public class Logger {
private org.apache.log4j.Logger logger;
/**
* 构造方法,初始化Log4j的日志对象
*/
private Logger(org.apache.log4j.Logger log4jLogger) {
logger = log4jLogger;
}
/**
* 获取构造器,根据类初始化Logger对象
*
* @param Class
* Class对象
* @return Logger对象
*/
public static Logger getLogger(Class classObject) {
return new Logger(org.apache.log4j.Logger.getLogger(classObject));
}
/**
* 获取构造器,根据类名初始化Logger对象
*
* @param String
* 类名字符串
* @return Logger对象
*/
public static Logger getLogger(String loggerName) {
return new Logger(org.apache.log4j.Logger.getLogger(loggerName));
}
public void debug(Object object) {
logger.debug(object);
}
public void debug(Object object, Throwable e) {
logger.debug(object, e);
}
public void info(Object object) {
logger.info(object);
}
public void info(Object object, Throwable e) {
logger.info(object, e);
}
public void warn(Object object) {
logger.warn(object);
}
public void warn(Object object, Throwable e) {
logger.warn(object, e);
}
public void error(Object object) {
logger.error(object);
}
public void error(Object object, Throwable e) {
logger.error(object, e);
}
public void fatal(Object object) {
logger.fatal(object);
}
public String getName() {
return logger.getName();
}
public org.apache.log4j.Logger getLog4jLogger() {
return logger;
}
public boolean equals(Logger newLogger) {
return logger.equals(newLogger.getLog4jLogger());
}
}
log4j.properties
//输出源的优先级以及命名,DEBUG < INFO < WARN < ERROR < FATAL
log4j.rootLogger=INFO,console,FILE,infofile
//输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
//日志输出的最低层次
log4j.appender.console.threshold=INFO
//默认表示所有的消息立即输出
log4j.appender.console.ImmediateFlush = true
//布局
log4j.appender.console.layout=org.apache.log4j.PatternLayout
//布局格式
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
//输出到文件,文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
////日志输出的最低层次,声明为error,则进来的info中的信息中在error之前的info和warn不会输出
log4j.appender.FILE.Threshold=INFO
//是否追加到文件末尾
log4j.appender.FILE.Append=true
//文件路径,指定路径会自动创建文件
log4j.appender.FILE.File=D://TotalDocument//logger//info.log
//布局声明
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
//布局格式
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
//文件尺寸
log4j.appender.FILE.MaxFileSize=1KB
//制定滚动文件的最大个数,放不下的文件会放到滚动文件里面并且会覆盖以前的信息
log4j.appender.FILE.MaxBackupIndex=2
//定时产生滚动文件
log4j.appender.infofile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile.Threshold = INFO
log4j.appender.infofile.File = D://TotalDocument//logger//error.log
log4j.appender.infofile.Append = true
log4j.appender.infofile.ImmediateFlush = true
//这里可以设置,是每个月每年还是每分钟产生滚动文件
log4j.appender.infofile.DatePattern = '_'yyyyMMdd'.log '
log4j.appender.infofile.layout = org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %l %m%n
//具体的格式化信息
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行