Java 日志技术、Logback日志框架、日志级别

一. 日志

  1. 日志:程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。

二. 日志技术

  1. 日志技术:可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)

  2. 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去修改。

三. 日志技术的体系

  1. 日志框架:

① JUL(Java.util.logging)

② Log4j

③ Logback

④ 其他实现

  1. 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口

① Commons Logging(JCL) --->JUL(Java.util.logging)

② Simple Logging Facade for Java(SLF4J)---> Log4j、 Logback

四. Logback日志框架

1 . Logback官网:https://logback.qos.ch/index.html

  1. logback日志框架有以下几个模块

① logback-core :基础模块,是其他两个模块依赖的基础(必须有)

② logback-classic:完整实现了slf4jAPI的模块(必须有)

③ logback-access:与Servlet容器集成, 如Tomcat和Jetty,提供HTTP访问日志 功能(可选)

  1. 想要使用Logback日志框架,至少需要在项目中整合三个模块:slf4j-api:日志接口; logback-core :基础模块;logback-classic功能模块。

五. 使用Logback日志框架

1. 下载

slf4j-api:

logback-core:Central Repository: ch/qos/logback/logback-core/1.2.3

logback-classic:Central Repository: ch/qos/logback/logback-classic/1.2.3

2. 导入Logback框架到项目中

3. 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)

可以修改日志记录路径:<!--日志输出路径--> <file>D:\JavaCode\log\wyyzs.log\</file>

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
    -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出流对象 默认 System.out 改为 System.err-->
        <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>
        <!--日志输出路径-->
        <file>E:/仓库/log/gst-data.log</file>
        <!--指定日志文件拆分和压缩规则-->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--通过指定压缩文件名称,来确定分割文件方式-->
            <fileNamePattern>C:/code/itheima-data2-%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>

4. 创建Logger对象

创建 Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。

java 复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test1_Logger {
    //创建Looger日志对象
    public static final Logger logger = LoggerFactory.getLogger(Test1_Logger.class);

    public static void main(String[] args) {

        try{
            logger.info("开始执行test方法");
            test(8, 2);
            test(3,0);
            logger.info("执行test方法结束");
        }catch (Exception e){
            logger.error("test方法执行失败" + e.getMessage());
        }

    }

    public static void test(int a, int b) {
        logger.debug("a=" + a + ", b=" + b);
        int c = a / b;
        System.out.println(c);
        logger.info("test方法结果是" + c);
    }
}

六. 核心配置文件logback.xml

  1. logback.xml对Logback日志框架进行控制的。

  2. 通常可以设置2个输出日志的位置:一个是控制台、一个是系统文件中

  1. 开启日志(ALL),取消日志(OFF)

七. 日志级别

  1. 日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高)

|-------|--------------------------------|
| 日志级别 | 说明 |
| trace | 追踪,指明程序的运行轨迹 |
| debug | 调试,实际应用中一般将其作为最低级别,trace很少使用 |
| info | 输出重要的运行信息,数据连接、网络连接、IO操作等,使用较多 |
| warn | 警告信息,可能会发生问题,使用较多 |
| error | 错误信息,使用较多 |

  1. 只有日志的级别大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录
相关推荐
轩情吖几秒前
一文速通stack和queue的理解与使用
开发语言·c++·后端·deque·优先级队列·stack和queue
Agnes_A2014 分钟前
线性回归笔记1-4
开发语言·python
mumu2lili20 分钟前
k8s namespace绑定节点
java·容器·kubernetes
ByteBlossom66622 分钟前
JavaScript语言的正则表达式
开发语言·后端·golang
mikey棒棒棒23 分钟前
基于Redis实现短信验证码登录
java·开发语言·数据库·redis·session
Pandaconda28 分钟前
【新人系列】Python 入门(二十八):常用标准库 - 上
开发语言·经验分享·笔记·后端·python·面试·标准库
Wanna71534 分钟前
后端开发基础——JavaWeb(Servlet)
java·后端·servlet·tomcat
生产队队长35 分钟前
项目练习:若依后台管理系统-后端服务开发步骤(springboot单节点版本)
java·spring boot·后端
m0_7482368336 分钟前
【wiki知识库】08.添加用户登录功能--后端SpringBoot部分
java·spring boot·后端
nbsaas-boot36 分钟前
Java 在包管理与模块化中的优势:与其他开发语言的比较
java·开发语言