Log4j是什么

组件

Loggers(日志记录器)


Appenders(输出控制器)

Layouts(日志格式化)


日志输出格式

利用例子解读

1 创建maven项目,导入log4j依赖

  <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

2 写代码,入门


import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.junit.Test;


public class Log4jTest {
   

    @Test
    public void test(){
   
// 加载初始化配置
        BasicConfigurator.configure();

        // 创建日志记录器对象,不是直接new,因为这个类受保护,所以只能使用静态方法进行创建对象
        Logger logger = Logger.getLogger(Log4jTest.class);
        // 日志记录输出
        logger.info("dddddd");


    }
}


log4j有默认的配置,

        BasicConfigurator.configure();

这个是加载默认的配置,不写这个会报错,我们看这个源码里面是什么


这个配置里面是默认的控制台输出,输出格式也有默认的

日志级别


如何利用配置文件




源码里面,这个文件可以配置哪些?


也就是项目一启动,就会加载log4j.properties这个文件,就会加载里面的这些属性。


CONSOLE 这个是自己定义的,你也可以改名字


log4j.rootCategory=info

# 表示以控制台方式输出
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
# 表示输出的格式
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %c-%d-%m%n


log4j.rootCategory=info,CONSOLE,LOGFILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %c-%d-%m%n

log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.Append=true


PatternLayout 这个是自定义的
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=- %c-%d-%m%n

将日志输出到文件(FileAppender)

我们再配置文件里面写 关于输出到文件的配置:


log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=- %c-%d-%m%n
log4j.appender.file.file = D://test//log4j.log
log4j.appender.file.encoding = UTF-8

将日志输出到文件(RollingFileAppender)

按照文件大小

log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=- %c-%d-%m%n
log4j.appender.rollingFile.file = D://log4j.log
log4j.appender.rollingFile.maxFileSize = 1MB
log4j.appender.rollingFile.maxBackupIndex = 5


将日志输出到文件(DailyRollingFileAppender)

按时间

log4j.appender.dailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyRollingFile.layout.ConversionPattern=- %c-%d-%m%n
log4j.appender.dailyRollingFile.file = D://log4j.log
log4j.appender.dailyRollingFile.datePattern = '.'yyyy-MM-dd HH-mm-ss

将日志输出到数据库中

首先在数据库中创建日志数据表


导入数据库依赖

#保存到数据库
log4j.appender.logDb=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDb.layout=org.apache.log4j.PatternLayout
log4j.appender.logDb.layout.ConversionPattern=- %c-%d-%m%n
log4j.appender.logDb.Driver = com.mysql.jdbc.Driver
log4j.appender.logDb.URL = com.mysql.jdbc.Driver
log4j.appender.logDb.User = root
log4j.appender.logDb.Password = 123456
log4j.appender.logDb.Sql = insert into tbl_log(id,name,createtime,level,filename) values()

配置一下就可以

自定义logger