日志文件log4j详解

1. 什么是log4j

log4j是一个流行的Java日志框架,是由 Apache 的一个开源项目。它允许开发人员通过将日志语句插入应用程序代码中来记录应用程序运行时的事件。

log4j主要是由 Logger,Appender,Layout 组成,

Logger,日志记录器,控制日志的输出级别以及是否输出日志。 ​ Appender,控制日志被写入的位置,例如控制台、文件等。 ​ Layout,用于定义日志输出的格式。

2.log4j的日志级别

Log4j有六个日志级别,分别是:TRACEDEBUGINFOWARNERRORFATAL。 ​ 日志优先级为:TRACE<DEBUG<INFO<WARN<ERROR<FATAL

3. log4j配置

3.1依赖引入:pom.xml
        +<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
​
        <!--log4j-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.36</version>
        </dependency>

3.2添加配置文件:src\main\resources\log4j.properties
log4j.rootCategory=DEBUG, stdout
​
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n

第一行设置了根日志的级别为DEBUG,即只有DEBUG级别及以上的日志会被记录。同时,定义了一个名为"stdout"的附加器(appender)。

第二行定义了一个名为"stdout"的控制台附加器(ConsoleAppender),表示将日志输出到控制台。

第三行设置了"stdout"附加器的布局(layout)为PatternLayout,即使用PatternLayout来格式化日志输出。

第四行定义了PatternLayout的转换模式(ConversionPattern),其中%d表示输出日志的时间,%5p表示输出日志级别的名称,%t表示输出日志的线程名,%c表示输出日志的类名,%L表示输出日志的行号,%m表示输出日志的消息,%n表示换行。

3.2.1Appender 附加器 

# 定义名为CONSOLE的appender(输出到控制台)

**log4j.appender.console=org.apache.log4j.ConsoleAppender**

# 定义名为file的appender(输出到文件中)

log4j.appender.file=org.apache.log4j.FileAppender `
log4j.appender.file.File=E:/workspace/logfile.txt `
log4j.appender.file.encoding=UTF-8`

# 定义名为rollingfile的appender(滚动的输出到文件中)

log4j.appender.rollingfile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingfile.File=E:/workspace/logrollingfile.txt
log4j.appender.rollingfile.encoding=UTF-8
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
3.2.3日志格式化器

# 自定义输出格式

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n

# 简单布局

log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

一些自定义输出格式

4.测试
@Slf4j
public class LogAnnotation {
    
    public static void main(String[] args) {
        log.debug("这是debug级别的日志");
        log.info("这是info级别的日志");
        log.warn("这是warn级别的日志");
        log.error("这是error级别的日志");
    }
}

  • %d{ABSOLUTE}:输出日志的时间,使用绝对时间格式(HH:mm:ss,SSS)。

  • %5p:输出日志的级别,占5个字符的宽度,不足的地方使用空格填充。

  • %t:输出日志的线程名。

  • %c{2}:输出日志的类名(包含包名),只显示最后两级类名(不包含包名)。

  • :%L:输出日志的行号。

  • -%m%n:输出日志的消息和换行符。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值