一.log4j框架
- log4j可靠的,快速的,可扩展的(灵活的)日志框架
- log4j具有高可配置性,可以通过外部配置文件来控制
- log4j可以根据日志不同级别来过滤日志,
- log4j可以将日志记录直接写到控制台,文件,数据库,UNIX系统日志
- log4j的配置文件默认引用地址为PATH或者CLASSPATH所在目录当中(在src下面,第一层),标准名称=log4j.properties
总结:首先log4j是一个日志框架,用来记录项目运行中的一些日志,而log4j的配置是通过外部的配置文件来实现,体现了这个框架的灵活性
并且日志分级别过滤,更高级的是能将日志记录到很多地方.
二.log4j的maven引用和下载地址
1.maven地址
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.jar下载地址
http://logging.apache.org/log4j/2.x/download.html
三.配置文件
解释:
第一行-------------初始化日志记录位置,日志过滤级别 (ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL)
第二行-------------日志以什么方式打印(输出源)(file,DB,Console,)
第三行-------------日志以什么格式打印(布局)(PatternLayout,HTMLLayout)
//1.输出源响应的实现类 //文件 file--->org.apache.log4j.FileAppender //数据库 DB--->org.apache.log4j.JDBCAppender //控制台 Console--->org.apache.log4j.ConsoleAppender //2.布局模式 PatternLayout--->org.apache.log4j.PatternLayout HTMLLayout--->org.apache.log4j.HTMLLayout
四.输出源参数解析
一.数据库参数 (org.apache.log4j.JDBCAppender)
user | 连接数据库的用户名 |
password | 连接数据库的密码 |
URL | 数据库的连接字符串 |
driver | 连接数据库的驱动程序 |
sql | 设置操作数据库的SQL语句 |
五.布局模式参数解析
一.PatternLayout参数
M | 打印日志请求的方法名称 method |
C | 输出日志打印请求的类名加包名,例:com.test.Test |
X | 打印日志记录请求的客户端地址 |
d | 打印日志记录的当前时间%d{yyyy-MM-dd HH:mm:ss} |
m | 打印应用程序的一些信息 |
p | 打印日志的过滤级别 |
n | 输出一个当前系统的换行符 |
六.测试
1.日志记录文件测试
log4j配置
logDir=D:/log log4j.rootLogger=DEBUG,FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${logDir}/log.txt log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n
2.日志记录数据库测试
log4j配置
log4j.rootLogger = INFO, DB log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DB.URL=jdbc:mysql://localhost:3306/Testlogs log4j.appender.DB.driver=com.mysql.jdbc.Driver log4j.appender.DB.user=**** log4j.appender.DB.password=**** log4j.appender.DB.sql=INSERT INTO log (logDate, logClientIP, logName, logLevel, logMsg) VALUES('%d','%X{clientIP}','%C','%p','%m') log4j.appender.DB.layout=org.apache.log4j.PatternLayout
数据库表
CREATE TABLE log4j( logId INT AUTO_INCREMENT PRIMARY KEY NOT NULL, logDate VARCHAR(10), logClientIP VARCHAR(15), logName VARCHAR(255), logLevel VARCHAR(5), logMsg VARCHAR(255) );
七.java测试
package com.du20150626; import org.apache.log4j.Logger; public class Log4jTest { /** * log4j可靠的,快速的,可扩展的(灵活的)日志框架 * log4j具有高可配置性,可以通过外部配置文件来控制 * log4j可以根据日志不同级别来过滤日志, * log4j可以将日志记录直接写到控制台,文件,数据库,UNIX系统日志 * log4j配置文件名称=log4j.properties 存放位置PATH或者CLASSPATH所在目录当中 * */ private static Logger log = Logger.getLogger(Log4jTest.class); public static void main(String[] args) { log.debug("Debug ----> log4j debug"); log.info("info -----> log4j info"); log.info("info -----> log4j info"); log.debug("Debug ----> log4j debug"); log.info("info -----> log4j info"); log.info("info -----> log4j info"); log.info("info -----> log4j info"); } }