当前位置: 首页 > article >正文

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

一. 日志

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

二. 日志技术 

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

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

三. 日志技术的体系

        1. 日志框架:

                ① JUL(Java.util.logging)

                ② Log4j

                ③ Logback

                ④ 其他实现

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

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

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

四. Logback日志框架

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

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

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

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

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

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

五. 使用Logback日志框架

        1. 下载

                        slf4j-api

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

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

        2. 导入Logback框架到项目中

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

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

<?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对象调用其提供的方法就可以记录系统的日志信息。   

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个输出日志的位置:一个是控制台、一个是系统文件中

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

 

七. 日志级别

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

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

        2. 只有日志的级别大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录 

         


http://www.kler.cn/a/512373.html

相关文章:

  • mac m1下载maven安装并配置环境变量
  • Python数据分析案例70——基于神经网络的时间序列预测(滞后性的效果,预测中存在的问题)
  • jlatexmath-android如何实现自定义渲染字符
  • 5、docker-compose和docker-harbor
  • C/C++内存管理(超详解)
  • Linux-性能分析top
  • 使用vue-next-admin框架后台修改动态路由
  • easy_Maze
  • 数据库的DQL(3)
  • 【18】Word:明华中学-儿童医保❗
  • CSS中相对定位和绝对定位详解
  • Pytorch使用教程(12)-如何进行并行训练?
  • Golang Gin系列-6:Gin 高级路由及URL参数
  • TIM定时中断
  • vue动态修改网页icon图标【浏览器】
  • ARCGIS国土超级工具集1.3更新说明
  • (7)(7.2) 围栏
  • 第四届机器学习、云计算与智能挖掘国际会议
  • C++:bfs解决多源最短路与拓扑排序问题习题
  • games101笔记-02线性代数回顾
  • 第01章 07 MySQL+VTK C++示例代码,实现医学影像数据的IO数据库存储
  • 构建基于Hadoop的数据湖解决方案
  • 通过以太网加载linux内核、设备树、根文件系统方法(以stm32MP135为例)
  • 插入排序 计数排序 堆排序 快速排序 归并排序
  • 降维算法:主成分分析
  • Dockerfile另一种使用普通用户启动的方式