Java Logback日志框架概述及logback.xml详解

news2024/10/6 10:38:56

日志技术具备的优势
可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。·
可以随时以开关的形式控制是否记录日志,无需修改源代码。


日志体系结构
请添加图片描述

Logback日志框架
Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好
Logback是基于slf4j的日志规范实现的框架。

Logback主要分为三个技术模块:
logback-core: logback-core模块为其他两个模块奠定了基础,必须有。
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API。
logback-access模块与Tomcat和Jetty 等servlet容器集成,以提供HTTP访问日志功能

使用Logback需要使用哪几个模块,各自的作用是什么。
slf4j-api:日志规范
logback-core:基础模块。
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API
这些都可以去Logback或slf4j官方网站下载


使用Logback
请添加图片描述
完成这些步骤便可使用日志对象输出日志信息:

public class Test {
    //创建LogBack对象
    public static final Logger LOGGER=LoggerFactory.getLogger("Test.class");
    public static void main(String[] args) {
        try {
            LOGGER.debug("main开始执行");
            LOGGER.info("第二行日志");
            int a=10,b=0;
            LOGGER.trace("a="+a);
            LOGGER.trace("b="+b);
            System.out.println(a/b);
        } catch (Exception e) {
            e.printStackTrace();
            LOGGER.error("发生错误,"+e);
        }

    }
}

logback.xml文件:

<?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表示日期,%-5level:级别比如DEBUG、INFO 从左显示5个字符宽度 %c在哪个class里打的日志
                %thread表示线程名比如main %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>D:/Soft/Log/data.log</file>
        <!--指定日志文件拆分和压缩规则-->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--通过指定压缩文件名称,来确定分割文件方式 一旦到达一定大小按照下面的格式来拆分文件压缩-->
            <fileNamePattern>D:/Soft/Log/data2-%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
            <!--文件拆分大小 即文件到了1MB就开辟第二个文件存储-->
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
    </appender>

    <!--
    level:用来设置打印级别,大小写无关,级别程度依次是:TRACE < DEBUG < INFO < WARN < ERROR   默认debug
    可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出 只输出级别不低于设定级别的日志信息     ALL 和 OFF分别是打开全部日志信息和关闭全部
    <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
    -->
    <root level="ALL">
        <!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志-->
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

运行Test将在控制台和xml设置的文件路径中看到日志信息:

2023-06-15 16:15:49.941 [DEBUG]  Test.class [main] : main开始执行
2023-06-15 16:15:49.957 [INFO ]  Test.class [main] : 第二行日志
2023-06-15 16:15:49.964 [TRACE]  Test.class [main] : a=10
2023-06-15 16:15:49.964 [TRACE]  Test.class [main] : b=0
2023-06-15 16:15:49.966 [ERROR]  Test.class [main] : 发生错误,java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero


请添加图片描述

如果系统上线后只想记录一些错误的日志信息或者不想记录日志了,怎么办?
可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出。

日志级别级别程度依次是:TRACE<DEBUG<INFO<WARN<ERROR;默认级别是debug (忽略大小写),对应其方法。
作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。
ALL和OFF分别是打开全部日志信息,及关闭全部日志信息。
具体在root标签的level属性中设置日志级别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650678.html

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

相关文章

Android classLoader 双亲委托 反射

双亲委托 双亲委托机制&#xff0c;就是导入类的时候判断parent是否已经导入过该类。 作用 1、避免重复加载&#xff0c;当父加载器已经加载了该类的时候&#xff0c;没有必要子ClassLoader再加载一次。 2、安全性考虑&#xff0c;防止核心API库被随意篡改。 核心代码 pri…

CSS查缺补漏之常用长度单位(px、em、rem、%、vw/vh、vmin/vmax)

此文内容较少&#xff0c;轻轻松松掌握&#xff0c;莫要有压力~ 正如现实生活中长度具有mm、dm、cm、m等&#xff0c;在css中&#xff0c;也具备多种长度单位&#xff0c;本文对常用的几种单位进行详细举例介绍~ px&#xff1a;像素单位 初学css时&#xff0c;px单位经常被使用…

2023-06-16 Android Studio 使用CMakeList编译JNI ,源码

一、代码结构图&#xff0c;代码路径https://download.csdn.net/download/qq_37858386/87913001 二、cmakedemo\app\build.gradle 加下面的代码 externalNativeBuild {cmake {cppFlags "-frtti -fexceptions"}}externalNativeBuild {cmake {path src/main/jni/CMakeL…

邮件触发无需代码连接维格表的方法

1.邮件触发用户使用场景&#xff1a; 公司时常会收到来自各地的合作邮件&#xff0c;为了筛选合适的合作伙伴&#xff0c;公司需要查询对方企业的基础工商信息&#xff0c;例如企业的存续状态、法人代表、注册资金等等&#xff0c;然后将查询后的信息发送至高管群里&#xff0c…

使用docker部署ELK实战

目录 什么是ELKELK简介ElasticsearchLogstashKibana docker安装ELK安装es安装 Kibana安装logstash 什么是ELK ELK是一个开源的数据分析平台&#xff0c;由三个开源项目Elasticsearch、Logstash和Kibana组成&#xff0c;因此被称为ELK Stack。ELK Stack主要用于处理和分析大量的…

数字安全免疫力:“关基”企业构建安全体系的通关攻略

2023年5月1日起&#xff0c;《信息安全技术 关键信息基础设施安全保护要求》&#xff08;以下简称《关基保护要求》&#xff09;正式实施&#xff0c;这是关键信息基础设施安全保护相关的首个国家标准。相对于2021年9月1日起实施的《关键信息基础设施安全保护条例》&#xff0c…

复习css样式的第1章

什么是 CSS&#xff1f; CSS 指的是层叠样式表* (Cascading Style Sheets)CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素CSS 节省了大量工作。它可以同时控制多张网页的布局外部样式表存储在 CSS 文件中 三种使用 CSS 的方法 有三种插入样式表的方法&#xff1a; 外…

RISC-V体系结构的U-Boot引导过程 第一阶段

RISC-V体系结构的U-Boot引导过程 第一阶段 flyfish .globl _start _start:.globl使符号对链接器可见相当于C语言中的Extern&#xff0c;声明此变量&#xff0c;并且告诉链接器此变量是全局变量&#xff0c;外部可以访问.u-boot.lds里的ENTRY(_start)也是这里的_start。 即指定…

SUNet: Swin Transformer UNet for ImageDenoising

Abstract 图像恢复是一个具有挑战性的不适定问题&#xff0c;也是一个长期存在的问题。在过去的几年中&#xff0c;卷积神经网络(cnn)几乎主导了计算机视觉&#xff0c;并在不同层次的视觉任务中取得了相当大的成功&#xff0c;包括图像恢复。然而&#xff0c;最近基于Swin tr…

权限验证框架之Shiro

文章目录 前言shiro 核心项目构建默认Session模式配置测试接口Realm编写权限测试无权限测试登录测试权限测试 前后端分离tokenJWTFilter重写认证修改配置 总结 前言 交替换个脑子&#xff0c;一直搞考研的东西&#xff0c;实在是无聊。所以顺便把工程上的东西&#xff0c;拿来…

软件测试面试大全(全800+题)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xff0c…

C++ [STL之list模拟实现]

本文已收录至《C语言和高级数据结构》专栏&#xff01; 作者&#xff1a;ARMCSKGT STL之list模拟实现 前言正文基本框架节点类迭代器类list类 迭代器类功能实现list迭代器迭代器设计思想迭代器操作设计 list类功能实现默认成员函数容量查询数据访问节点插删相关头尾插删任意位置…

MySQL数据库索引的种类、创建、删除

目录 一&#xff1a;MySQL 索引 1、MySQL 索引介绍 2、 索引的作用 3、索引的副作用 4、 创建索引的原则依据 二、索引的分类和创建 1、 普通索引 &#xff08;1&#xff09; 直接创建索引 &#xff08;2&#xff09; 修改表方式创建 &#xff08;3&#xff09; 创建表的…

【Turfjs】几何计算,计算地理空间上点坐标的经纬度,距离,围成的闭合空间面积等工作,都可以通过Turfkjs来实现

​​​​​​Turf.js中文网 几何计算&#xff1a; 1. 前端js就用这个 Turfjs的类库。参考网站&#xff1a; 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库&#xff0c;参考网站&#xff1a;https://locationtech.github.io/jts/ https://github.com…

MVCC和undo log

MVCC多版本并发控制 MVCC是多版本并发控制&#xff08;Multi-Version Concurrency Control&#xff0c;简称MVCC&#xff09;&#xff0c;是MySQL中基于乐观锁理论实现隔离级别的方式&#xff0c;用于实现已提交读和可重复读隔离级别的实现&#xff0c;也经常称为多版本数据库…

面向对象接口

生活中大家每天都在用 USB 接口&#xff0c;那么 USB 接口与我们今天要学习的接口有什 么相同点呢&#xff1f; 在Java程序设计中的接口 接口就是规范&#xff0c;定义的是一组规则&#xff0c;体现了现实世界中“如果你是/要…则必须 能…”的思想。继承是一个"是不是&…

几款GB28181流媒体平台的详细介绍和使用整理

随着监控行业国标GB28181的应用范围越来越广泛&#xff0c;成熟的GB28181接入平台越来越多&#xff0c;本文梳理一下目前各大成熟的流媒体服务器平台及实际应用效果供各位参考。 1)NTV GBS NTV GBS是一款成熟、功能完善、产品化程度很高的GB28181服务平台&#xff0c;从2022年…

原点安全助力金融机构消费者个人信息保护合规

数字经济的发展进一步加速了金融业务与生活场景之间的融合&#xff0c;数亿民众在享受金融数字化便利服务的同时&#xff0c;也更容易遭受个人信息泄露、权益侵害等事件。在实际业务开展过程中&#xff0c;部分金融机构仍存在各种侵害消费者个人信息权益的乱象。 我国对数据安…

工作经验--产品季节性分析

产品季节性分析 1.了解季节性的重要性2.如何发现季节性产品统计方法&#xff1a;季节性指数法&#xff1a;傅里叶分析法&#xff1a;其他&#xff1a; 1.了解季节性的重要性 产品是否存在季节性变化&#xff0c;对于卖家来说相当重要&#xff0c;旺季提前备货、淡季防止库存冗余…

工业无监督缺陷检测,提升缺陷检测能力,解决缺陷样品少、不平衡等问题(二)

1. 工业缺陷检测简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业异常检测主要面临的挑战: 难以获取大量异常样本正常样本和异常样本差异较小异常的类型不能预先得知…