刚研究了一下log4j的用法,现在做一下总结。我先说一下知识点,后面会给出一个我写好的例子。
一、jar包
log4j是一个开源项目,要使用就必须引入jar包,这里给出一个我云盘分享的链接:log4j-1.2.17.jar,当然这个网上好多,自己随便搜一下就能找到。
二、日志级别,这里没什么好说的,我就把人家总结好的粘贴过来吧
每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。
三、输出端APPender
输出端说白了就是你的日志要写到哪里,这个选择性很多,根据你自己需求选择就行了。下面列一下可用的输出端:
1、org.apache.log4j.ConsoleAppender:将日志信息输出到控制台,本人还是喜欢syso
2、org.apache.log4j.FileAppender:将日志信息输出到一个文件
3、org.apache.log4j.DailyRollingFileAppender:将每天的日志信息输出到一个新的日志文件
4、org.apache.log4j.RollingFileAppender:这一个与上一个不同的地方就是可以控制日志文件的大小,超出时会生成新的
5、org.apache.log4j.WriteAppender:将日志信息以流格式发送到任意指定地方
6、org.apache.log4j.jdbc.JDBCAppender:通过JDBC把日志信息输出到数据库中
四、日志格式化器
这个也就是控制你日志写的格式,常见的有三种,分别是:HTMLLayout按照html格式输出,SimpleLayout简单输出模式(级别-信息),PatternLayout可以自定义格式。
其中PatternLayout是比较常用的,可以定义一些固定的信息,也可以指定一些变量信息,这些变量信息一般用‘%’与字母表示,常见的有:%m 表示日志信息, %t 表示输出该日志的线程, %d 表示输出日期时间, %n表示换行。
以上这些信息都可以在配置文件中配置,我目前用的配置文件名称为“log4j.properties”,直接放在src目录下就行,不需要手动 加载。如果用其它的名字或者放在其它的位置需要手动加载,加载用 PropertyConfigurator.configure("classes/my.properties");
下面是我用的配置文件:log4j.properties
log4j.rootLogger=DEBUG,msg,sql,ero
log4j.appender.msg=org.apache.log4j.DailyRollingFileAppender
log4j.appender.msg.File=./log/info
log4j.appender.msg.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.msg.Encoding=GBK
log4j.appender.msg.Threshold=INFO
log4j.appender.msg.layout=org.apache.log4j.PatternLayout
log4j.appender.msg.layout.ConversionPattern=<debug %d{yyyy-MM-dd HH:mm:ss.SSS} : %m />%n
log4j.appender.sql=org.apache.log4j.DailyRollingFileAppender
log4j.appender.sql.File=./log/sql
log4j.appender.sql.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.sql.Encoding=GBK
log4j.appender.sql.Threshold=FATAL
log4j.appender.sql.layout=org.apache.log4j.PatternLayout
log4j.appender.sql.layout.ConversionPattern=<sql %d{yyyy-MM-dd HH:mm:ss.SSS} : %m />%n
log4j.appender.ero=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ero.File=./log/error
log4j.appender.ero.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.ero.Encoding=GBK
log4j.appender.ero.Threshold=ERROR
log4j.appender.ero.layout=org.apache.log4j.PatternLayout
log4j.appender.ero.layout.ConversionPattern=<error %d{yyyy-MM-dd HH\:mm\:ss.SSS} \: %m />%n
这里我就不对日志文件做详细说明了,相信仔细看一下就能明白了。
下面是我调用的类,是根据日志文件做的,很简单
package com.bks.log;
import org.apache.log4j.Logger;
/**
* 日志管理类
* @author ICE
*
*/
public class LOG {
/**
* 获取log4j的日志记录器,通过该记录器
*/
private static Logger logger = Logger.getLogger(LOG.class);
/**
* 向info日志文件中记录日志信息
* @param msg 要记录的日志信息
*/
public static void log(String msg){
logger.info(msg);
}
/**
* 向fatal日志文件中记录信息,这里主要记录sql信息
* @param sql 要记录的日志信息
*/
public static void SQLLog(String sql){
logger.fatal(sql);
}
/**
* 向error日志文件中记录信息
* @param error 要记录的日志信息
*/
public static void errorLog(String error){
logger.error(error);
}
/**
* 向error日志文件中记录信息,信息包括基本信息和异常信息
* @param error 要记录的基本日志信息
* @param e 要记录的异常信息
*/
public static void errorLog(String error,Exception e){
logger.error(error + ":" + e.getMessage());
}
}
这里一些知识点没有用到,也没有在程序中手动配置一些信息,如果需要可以自己研究一下。