Log日志框架汇总

1 Logback

1.1 Logback下载


一般情况,Logback日志框架只需要下载slf4j-api、logback-core、logback-classic这三个jar包即可。

(一)快捷下载方法
slf4j-api-1.7.26.jar官网下载链接:
https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.26/
logback-core-1.2.3.jar官网下载链接:
https://repo1.maven.org/maven2/ch/qos/logback/logback-core/1.2.3/
logback-classic-1.2.3.jar官网下载链接:
https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/


1.2 Logback使用

1.2.1 通过手动导包方式引入(不推荐)

1)在项目下新建文件夹lib,导入Logback的相关jar包到该文件夹下,并将lib文件夹手动添加到项目依赖库中去。
2)将Logback的核心配置文件logback.xml(名称固定)直接拷贝到src目录下(必须是src目录下)。

a.绝对路径

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    
    <!-- CONSOLE :表示当前的日志信息是可以输出到控制台的 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出流对象 默认 System.out 改为 System.err  其中err:控制台输出日志为红色,而out为黑色-->
        <target>System.out</target>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%n</pattern>
        </encoder>
    </appender>

    <!-- File:表示当前的日志信息是可以输出到文件的 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--日志输出路径(logback_message.log是文档名,下方还有一处文件名(不用写.log))-->
        <file>D:\logback\logback_message.log</file>
        <!--指定日志文件拆分和压缩规则(防止文件过大)-->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--通过指定压缩文件名称,来确定分割文件方式-->
            <fileNamePattern>D:\logback\logback_message-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
            <maxFileSize>1MB</maxFileSize> <!--文件拆分大小-->
        </rollingPolicy>
    </appender>

    <!--
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF (关掉), 默认debug(可忽略大小写)
    <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
    -->
    <root level="ALL"> <!--打印规则:只打印不低于当前级别的日志-->
        <appender-ref ref="CONSOLE"/> <!--如果这个地方不配置关联打印的位置,改位置将不会记录日志-->
        <appender-ref ref="FILE" />
    </root>
</configuration>

b.相对路径

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--三种相对路径-->
    <!--1. value="logs" 即value="./logs" – 表示保存到程序运行目录  ./logs等同于logs-->
    <!--2. value="/logs" – 表示保存到系统目录-->
    <!--3. value=“../logs” – 表示保存到程序运行目录的父目录-->
    
    <proprety name="LOG_PATH" value="./logs" />
    <!-- CONSOLE :表示当前的日志信息是可以输出到控制台的 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出流对象 默认 System.out 改为 System.err  其中err:控制台输出日志为红色,而out为黑色-->
        <target>System.out</target>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%n</pattern>
        </encoder>
    </appender>

    <!-- File:表示当前的日志信息是可以输出到文件的 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--日志输出路径(logback_message.log是文档名,下方还有一处文件名(不用写.log))-->
        <file>log\logback_message.log</file>
        <!--指定日志文件拆分和压缩规则(防止文件过大)-->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--通过指定压缩文件名称,来确定分割文件方式-->
            <fileNamePattern>${LOG_PATH}\logback_message-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
            <maxFileSize>1MB</maxFileSize> <!--文件拆分大小-->
        </rollingPolicy>
    </appender>

    <!--
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF (关掉), 默认debug(可忽略大小写)
    <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
    -->
    <root level="ALL"> <!--打印规则:只打印不低于当前级别的日志-->
        <appender-ref ref="CONSOLE"/> <!--如果这个地方不配置关联打印的位置,改位置将不会记录日志-->
        <appender-ref ref="FILE" />
    </root>
</configuration>


3)在代码中获取日志的对象与使用

getLogger("LogBackUtil");-------值为类名

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @Auther lmy
 * @date 2024-03-25 23:14
 * @Description This is description of code
 */
public class LogBackUtil {
    public static final Logger LOGGER = LoggerFactory.getLogger("LogBackUtil");

    public static void main(String[] args) {
        LOGGER.error("出错啦error");
        LOGGER.warn("警告!warn");
        LOGGER.info("收账啦info");
        LOGGER.debug("没出错!debug");
        LOGGER.trace("跟踪中trace");
    }
}


4)使用日志对象输出日志信息
在控制台中输出

在日志文件中输出

1.2.2 maven方式引入

1)在maven项目中的pom.xml文件中引入依赖(logback-classic会依赖另外两个包)

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <scope>test</scope>
        </dependency>


2)将Logback的核心配置文件logback.xml(名称固定)直接拷贝到maven项目的资源路径resources下


1.3 日志输出级别


level可等于TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFF或不写。
作用:用于控制系统中哪些日志级别是可输出的。
规则:
1)级别:TRACE<DEBUG<INFO<WARN<ERROR(可以忽略大小写);
2)默认级别是debug(即可不写level=“DEBUG”);
3)只输出不低于当前级别的日志;
4)ALL和OFF分别是打开全部日志和关闭全部日志。


2 JUL(了解)

JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框架使用方便,学习简单,能够在小型应用中灵活使用。

package com.example;

import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.util.logging.*;

/**
 * @Auther lmy
 * @date 2024-06-04 23:26
 * @Description This is description of code
 */
public class Main {
    @Test
    public void testJUL() {
        //1.获取日志记录器对象
        Logger logger = Logger.getLogger("com.example.Main");

        //2.日志记录输出
        logger.info("hello,JUL LOG");

        //通用方法进行日志记录
        logger.log(Level.INFO, "info msg");

        //通用占位符方式输出变量值
        String name = "Tom";
        Integer age = 18;
        logger.log(Level.INFO, "用户信息:{0},{1}", new Object[]{name, age});
    }


    //日志级别
    @Test
    public void testLogLevel() {
        //1.获取日志记录器对象
        Logger logger = Logger.getLogger("com.example.Main");
        //2.日志记录输出
        logger.severe("severe");
        logger.warning("warning");
        logger.info("info");   //jul 默认日志级别 info    只输出以上三个
        logger.config("config");
        logger.fine("fine");
        logger.finer("finer");
        logger.finest("finest");
    }


    //自定义日志级别
    @Test
    public void testLogConfig() throws IOException {
        //1.获取日志记录器对象
        Logger logger = Logger.getLogger("com.example.Main");

        //关闭系统默认配置
        logger.setUseParentHandlers(false);

        //自定义配置日志级别
        //创建ConsoleHandler  控制台输出
        ConsoleHandler consoleHandler = new ConsoleHandler();

        //创建简单格式转换对象
        SimpleFormatter simpleFormatter = new SimpleFormatter();

        //进行关联
        consoleHandler.setFormatter(simpleFormatter);
        logger.addHandler(consoleHandler);

        //配置日志具体级别
        logger.setLevel(Level.ALL);
        consoleHandler.setLevel(Level.ALL);



        //创建FileHandler   文件输出
        FileHandler fileHandler = new FileHandler("./jul.log");

        //进行关联
        fileHandler.setFormatter(simpleFormatter);
        logger.addHandler(fileHandler);



        //2.日志记录输出
        logger.severe("severe");
        logger.warning("warning");
        logger.info("info");   //jul 默认日志级别 info    只输出以上三个
        logger.config("config");
        logger.fine("fine");
        logger.finer("finer");
        logger.finest("finest");
    }
}


3.LOG4J

Log4j是Apache下的一款开源的日志框架,通过在项目中使用Log4,我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程。方便项目的调试。

官方网站: http://logging.apache.org/log4j/1.2/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值