【日志】Log4j入门教程

1. Log4j 根配置语法

log4j.rootLogger = [ level ] , appenderName, appenderName, …
level需要用枚举值替换,表示日志级别
appenderName是输出方式,也是枚举值

把指定级别以上的日志信息输出到指定的一个或者多个位置

1.1 level 日志级别

org.apache.log4j.Level 类中定义了OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL七种日志级别

1.2 appenderName

appenderName是助记符,没有实际作用,但是针对appenderName,在下面,必须单独配置一个和appenderName相关的实现器,实现器的核心是appender,枚举值如下:

输出端类型作用
ConsoleAppender将日志输出到控制台
FileAppender将日志输出到文件中
DailyRollingFileAppender将日志输出到一个日志文件,并且每天输出到一个新的文件
RollingFileAppender将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大 小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件
JDBCAppender把日志信息保存到数据库中

1.3 使用模板

助记符没有意义,只要下面的配置和其保持一致

# 我们定义INFO级别,后面选择2种打印类型,控制台和文件
log4j.rootLogger=INFO, Console ,File 
#Console ,其实就是一个助记符
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    
#File ,其实就是一个助记符
log4j.appender.File = org.apache.log4j.FileAppender
log4j.appender.File.File = d://log4j2.log
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

在这里插入图片描述
不同的appender的参数,比如consoleappender就不要file位置参数,而相反,fileappender类型的必须指定位置

1.4 引用变量

有时,我们会定义一些公共参数,然后通过${}用,我们以zookeeper安装包conf/log4j.properties自带的为例:

在这里插入图片描述

1.5 Threshold属性

log4j.rootLogger=INFO, Console ,File 是全局属性,此时Console 和File都是INOF级别的,假设我想把Console改为ERROR,File仍维持不变,可以通过Threshold属性:

log4j.appender.Console.Threshold=ERROR

当然这里有个提前 Threshold层级必须大于 rootLogger里配置的level,即私人订制的要比全局的要更严格,否则无效,这里的顺序是OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 由大到小 。

2. 例子

1.配置依赖包引用

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

2.编码

import org.apache.log4j.Logger;

public class Log4jTest {

    static Logger logger = Logger.getLogger(Log4jTest.class.getName());

    public static void main(String[] args) {
        logger.debug("This is debug message.");
        logger.info("This is info message.");
        logger.error("This is error message.");
    }
}

3. eclipse配置log4j.properties

项目路径src下新建 log4j.properties 配置文件

# 日志级别和输出端,本例中同时向控制台和文件中写入日志
log4j.rootLogger=INFO,Console,A
#控制台输出端参数
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#文件输出端参数
log4j.appender.A=org.apache.log4j.FileAppender
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
log4j.appender.A.File=D:\\test\\logA.log

我们故意用A来充当助记符

4. idea 配置log4j.properties

在resources下:
在这里插入图片描述

2. 配置失效

有时发现配置未生效,则可能是冲突了,去掉冲突的包即可,比如spring boot下logback会产生冲突,去掉即可:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion><!--解决spring-boot-starter-logging下面的logback与log4j冲突-->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
</dependency>





参考:
《Log4j rootLogger根配置以及4种日志级别》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值