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

news2025/1/26 15:16:34

一. 日志

        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.coloradmin.cn/o/2281725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多视图学习】显式视图-标签问题:多视图聚类的多方面互补性研究

Explicit View-labels Matter:A Multifacet Complementarity Study of Multi-view Clustering TPAMI 2024 论文链接 代码链接 0.论文摘要 摘要-一致性和互补性是促进多视图聚类&#xff08;MVC&#xff09;的两个关键因素。最近&#xff0c;随着流行的对比学习的引入&#…

Datax可视化工具Datax-web安装部署

文章目录 一、Datax-web官网二、Datax-web介绍 1、Datax-web概述2、架构图3、系统环境要求4、特性支持 三、安装部署 1、环境准备2、Datax-web安装包准备 一、Datax-web官网 github&#xff1a;Datax-web gitee: Datax-web 二、Datax-web介绍 1、Datax-web概述 DataX Web…

Spark Streaming编程基础

文章目录 1. 流式词频统计1.1 Spark Streaming编程步骤1.2 流式词频统计项目1.2.1 创建项目1.2.2 添加项目依赖1.2.3 修改源目录1.2.4 添加scala-sdk库1.2.5 创建日志属性文件 1.3 创建词频统计对象1.4 利用nc发送数据1.5 启动应用&#xff0c;查看结果 2. 编程模型的基本概念3…

最新-CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机

CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机 一、前言二、设备要求三、环境要求四、安装4.1 环境安装4.2 JumpServer安装4.3 访问JumpServerWeb端&#xff0c;进行登录 五、登录Web控制台 一、前言 JumpServer是广受欢迎的开源堡垒机。运维必备神器&#xff01;JumpServe…

【电脑无法通过鼠标和键盘唤醒应该怎么办】

【电脑无法通过鼠标和键盘唤醒应该怎么办】 方法一(有时候不起作用):方法二(方法一无效时,使用方法二): 方法一(有时候不起作用): 方法二(方法一无效时,使用方法二):

python学习笔记2-简单数据类型

不同类型的变量可以进⾏的运算是不同的&#xff0c;所以必须理解变量的类型&#xff0c;python中数据类型可以分为&#xff1a; Number&#xff08;数值&#xff09; 整型&#xff08;int&#xff09; python3中只有int⼀种&#xff0c;可以表⽰整数&#xff0c;例如&#xf…

iOS开发设计模式篇第二篇MVVM设计模式

目录 一、什么是MVVM 二、MVVM 的主要特点 三、MVVM 的架构图 四、MVVM 与其他模式的对比 五、如何在iOS中实现MVVM 1.Model 2.ViewModel 3.View (ViewController) 4.双向绑定 5.文中完整的代码地址 六、MVVM 的优缺点 1.优点 2.缺点 七、MVVM 的应用场景 八、结…

Kafak 单例生产者实现-C#操作

前面写了一篇入门操作的文章,因为工作需要,简单修改了下如何实现单例生产者。 Kafka入门-C#操作_c# kafka-CSDN博客文章浏览阅读1.6k次,点赞20次,收藏9次。2).报错:“kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state…

JAVA与数据结构-线性表

目录 一.线性表的概念 二.线性表的关系及分类 三.数组与顺序表 四.链表 1.静态链表(链表的的数组底层实现&#xff09; 2.循环链表 3.双向链表 五.栈 1.栈的概念 2.栈的底层实现 3.共享空间栈 4.逆波兰表达式&#xff08;后缀表达式&#xff09; 5.栈与递归 六.…

2024.1.22 安全周报

政策/标准/指南最新动态 01 工信部印发《关于加强互联网数据中心客户数据安全保护的通知》 原文: https://www.secrss.com/articles/74673 互联网数据中心作为新一代信息基础设施&#xff0c;承载着千行百业的海量客户数据&#xff0c;是关系国民经济命脉的重要战略资源。…

WPS数据分析000005

目录 一、数据录入技巧 二、一维表 三、填充柄 向下自动填充 自动填充选项 日期填充 星期自定义 自定义序列 1-10000序列 四、智能填充 五、数据有效性 出错警告 输入信息 下拉列表 六、记录单 七、导入数据 ​编辑 八、查找录入 会员功能 Xlookup函数 VL…

如何使用 Node.js 构建一个简单的 API?

如何使用 Node.js 构建一个简单的 API&#xff1f; 在现代 Web 开发中&#xff0c;构建高效的 API 是连接前端与后端的核心任务之一。本文将向您展示如何使用 Node.js 构建一个简单的 API&#xff0c;同时通过示例说明如何测试 API。 步骤一&#xff1a;安装 Node.js 和创建项…

StarRocks强大的实时数据分析

代码仓库&#xff1a;https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始&#xff1a;StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO、智能物化…

详解Redis的Zset类型及相关命令

目录 Zset简介 ZADD ZCARD ZCOUNT ZRANGE ZREVRANGE ZRANGEBYSCORE ZPOPMAX BZPOPMAX ZPOPMIN BZPOPMIN ZRANK ZREVRANK ZSCORE ZREM ZREMRANGEBYRANK ZREMRANGEBYSCORE ZINCRBY ZINTERSTORE 内部编码 应用场景 Zset简介 有序集合相对于字符串、列表、哈希…

Android实训十 数据存储和访问

实训10 数据存储和访问 一、【实训目的】 1、 SharedPreferences存储数据; 2、 借助Java的I/O体系实现文件的存储&#xff0c; 3、使用Android内置的轻量级数据库SQLite存储数据; 二、【实训内容】 1、实现下图所示的界面&#xff0c;实现以下功能&#xff1a; 1&#x…

在Unity中使用大模型进行离线语音识别

文章目录 1、Vosk下载下载vosk-untiy-asr下载模型在项目中使用语音转文字音频转文字2、whisper下载下载unity项目下载模型在unity中使用1、Vosk 下载 下载vosk-untiy-asr Github链接:https://github.com/alphacep/vosk-unity-asr 进不去Github的可以用网盘 夸克网盘链接:h…

华为支付接入规范

为了确保用户获得良好的支付体验&#xff0c;Payment Kit制定了相关接入设计规范&#xff0c;请开发者遵照执行&#xff0c;具体要求&#xff08;非强制性&#xff09;如下&#xff1a; 一、支付方式呈现 涉及支付公司名称&#xff0c;请统一使用&#xff1a;花瓣支付&#xff…

数据结构——实验八·学生管理系统

嗨~~欢迎来到Tubishu的博客&#x1f338;如果你也是一名在校大学生&#xff0c;正在寻找各种编程资源&#xff0c;那么你就来对地方啦&#x1f31f; Tubishu是一名计算机本科生&#xff0c;会不定期整理和分享学习中的优质资源&#xff0c;希望能为你的编程之路添砖加瓦⭐&…

【C++篇】红黑树封装 实现map和set

目录 前言&#xff1a; 一&#xff0c;库中map和set的大致结构 二&#xff0c;模拟实现 2.1&#xff0c;大致框架 2.2&#xff0c;复用红黑树实现insert接口 2.3&#xff0c;迭代器iterator的实现 operator()的实现&#xff1a; operator--()的实现&#xff1a; 对inser…

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题

操作系统&#xff1a;CentOS 9 Zabbix版本&#xff1a;Zabbix7.2 问题描述&#xff1a;主机图形中文字符乱码 解决方案&#xff1a; # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体&#xff1a; fc-list :lan…