日志工具包

在Java项目中常见的日志工具包:

Log4j:Apache推出的日志工具。与2012年5月发布1.2.17版本后停止更新。
Logback:属于Log4j的继承者。Spring Boot默认日志文件支持类型。
Log4j2:属于Log4j升级版,同时里面还包含了Logback的很多改进。
commons-logging:Apache早期基于门面(Facade)设计模式的日志包,提供了日志解构能力,按照顺序寻找当前项目日志接口实现、Log4j、JDK Log、SimpleLog
Slf4j( Simple Logging Facade for Java ):目前使用非常多的门面日志。统一项目中日志。
JDK Logging:JDK自带的日志API

1.JDK Logging

JDK Logging 是JDK自带的日志工具。存在于java.util.logging包中。
日志级别: // OFF > SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST > ALL

public class Demo {
    public static void main(String[] args) throws IOException {
    	
        Logger logger = Logger.getLogger("Demo(一般写类名)");
        // 默认为INFO级别,同时设置当前和父处理器级别才能修改
        // OFF > SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST > ALL
        logger.setLevel(Level.INFO);//全局输出级别
        Handler[] handlers = logger.getParent().getHandlers();// 获取输出控制台的处理器
        handlers[0].setLevel(Level.INFO);//控制台输出级别

        // 默认没有输出到文件,只输出到控制台,通过添加Handler增加输出目的地,输出到文件中
        FileHandler fh = new FileHandler("my.log");// 如果路径夹会不存在文件夹会报错
        fh.setFormatter(new SimpleFormatter());// 设置输出内容为普通格式
        logger.addHandler(fh);

        logger.severe("severe");// 严重
        logger.warning("warning");// 警告
        logger.info("info");// 信息
        logger.config("config");// 配置
        logger.fine("fine");// 详细
        logger.finer("finer");// 较详细
        logger.finest("finest");// 非常详细
    }
}

2.Log4j

日志级别: fatal(致命错误) > error(错误) >warn(警告) >info(普通信息) >debug(调试信息)>trace(跟踪信息)
1.导入依赖

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

2.编写配置文件
在resources中新建log4j.properties,名称不要写错了
log4j.properties文件必须放在resources文件夹下

# log4j中定义的级别:fatal(致命错误) > error(错误) >warn(警告) >info(普通信息) >debug(调试信息)>trace(跟踪信息)
log4j.rootLogger = DEBUG , console , D //这里配置的是debug表示只能输出debug及以上级别的日志 

### console ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH\:mm\:ss}] %C.%M(%L) | %m%n

### log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/log4j.log
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH\:mm\:ss}] %C.%M(%L) | %m%n

3.测试类

// 不要导错包了
import org.apache.log4j.Logger;
public class TestLog4j {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(TestLog4j.class);
        logger.trace("跟踪级别");
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("重大错误信息");
    }
}

Log4j2

1.pom.xml
虽然只导入了log4j-core,但是实际导入log4j-core和log4j-api

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.2</version>
        </dependency>

Log4j2不再支持Log4j的.properties格式配置文件。而是支持.xml、.json、jsn.
在resource目录新建log4j2.xml

<?xml version="1.0" encoding="utf-8" ?>
<Configuration >
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">//输出到控制台格式
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <File name="log" fileName="log/test.log" append="true">//输出到本地文件格式
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">//日志输出级别,输出到哪
            <AppenderRef ref="Console"/>//输出到控制台
            <AppenderRef ref="log"/>//输出到本地文件
        </Root>
    </Loggers>
</Configuration>

测试

// 千万别导错包了
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TestLog4j {
    public static void main(String[] args) {
        Logger logger = LogManager.getLogger(TestLog4j.class);
        logger.trace("跟踪级别");
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("重大错误信息");
    }
}

SLF4j

SLF4j是日志的接口声明,不参与日志的具体实现。需要配合其他日志具体实现工具包才能进行使用。每次添加其他日志工具包时,不要忘记SLF4j整合这个日志的依赖。
SLF4J支持多种日志实现,但是在项目中整合依赖最好只有一个,否则会出现警告
导入3个依赖,分别代表slf4j依赖、整合依赖、log4j的依赖。

整合Log4j

<!-- slf4j的依赖 -->
		<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <!--slf4j整合log4j的依赖,版本要和slf4j的版本对应 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.36</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

测试:

public class Test {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Test.class);

        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }
}

整合Log4j2
配置pom.xml
与SLF4J整合Log4j的整合包是不一样的。

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <!-- SLF4j整合Log4j2的依赖 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.2</version>
        </dependency>
        <!-- Log4j2工具的依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.2</version>
        </dependency>
    </dependencies>

测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值