相关的jar包依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zh</groupId> <artifactId>log4j-test</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> </dependencies>
log4j.properties
的配置文件
# 日记级别(单个级别) 文件/控制台 log4j.rootLogger=debug, stdout,file # Redirect log messages to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Rirect log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=test.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Log4jTest.java
public class Log4jTest { private static final Logger logger = LoggerFactory.getLogger(Log4jTest.class); public static void main(String[] args) { logger.debug("debug"); logger.warn("warm"); logger.error("error"); } }
控制台打印的信息如下:
将日志文件写入数据库
在上面项目的基础上加上连接数据库的jar包
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency>
在log4j.xml
的配置文件中添加将日志文件插入数据库的配置,同时需要将第一行配置文件改为:
# 日记级别(单个级别) 文件/控制台 log4j.rootLogger=debug, stdout,file,datasource
#下面是配置将日志信息插入数据库, #配置输出目标为数据库(假如要将日志在控制台输出,配置为log4j.appender. stdout =org.apache.log4j.ConsoleAppender;将日志写入文件,配置为log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender #这样的配置在许多地方都要有,需要可查有关资料),当然你也可以自己扩展org.apache.log4j.jdbc.JDBCAppender这个类,只需要在这里配置就可以了例如我们配置我自己扩展的MyJDBCAppender,配置为#log4j.appender.db=com.neam.commons.MyJDBCAppender log4j.appender.datasource=org.apache.log4j.jdbc.JDBCAppender log4j.appender.datasource.layout=org.apache.log4j.PatternLayout log4j.appender.datasource.driver=com.mysql.jdbc.Driver #定义什么级别的错误将写入到数据库中 log4j.appender.datasource.BufferSize=1 #设置缓存大小,就是当有1条日志信息是才忘数据库插一次,我设置的数据库名和表名均为user log4j.appender.datasource.URL=jdbc\:mysql\://localhost\:3306/user?characterEncoding\=UTF8&zeroDateTimeBehavior\=convertToNull log4j.appender.datasource.user=root log4j.appender.datasource.password=root log4j.appender.datasource.sql=insert into user (class,method,create_time,log_level,log_line,msg) values ('%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%l','%m')