首页 > 编程语言 >JAVA日志技术 & Logback

JAVA日志技术 & Logback

时间:2023-09-08 20:32:43浏览次数:53  
标签:JAVA 框架 logback 日志 Logback log4j 级别

前言

为什么需要记录日志?我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统监控和异常分析起着至关重要的作用

一、日志概括

1.了解日志框架

JAVA在早期的日志都是通过System.out.println()进行记录的,但是这种方式不便于管理,所以apache最先开发了首个日志框架:log4j; 为日志框架奠定了基础;

日志框架出现的历史顺序为 :

 log4j → JUL → JCL → SLF4J → logback → log4j2

本章我们学习 logback ;目前比较火的框架,spring2.0默认使用logback日志

2.了解logback

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j好

Logback是SpringBoot内置的日志处理框架,你会发现spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。官方文档:http://logback.qos.ch/manual/

Logback主要分为三个技术模块:

  1. Logback-core:为其他两个模块奠定了基础,必须有
  2. Logback-classic:它是log4j的一个改良版本,同时完整实现了slf4j API
  3. Logback-access:与Tomcat 和 Jetty等Servlet容器集合,以提供HTTP访问日志功能

二、使用logback

1.导入jar包

首先建一个名为lib的目录,把jar包导入进去

JAVA日志技术 & Logback_System

全选我们的jar包,然后右键,选择Add as library . . .  

JAVA日志技术 & Logback_System_02

2.配置文件XML

网上下载logback.xml文件,将核心配置文件logback.xml拷贝到src目录下(必须是src)

或者在src目录下创建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表示日期,%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>C:/code/itheima-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>

3.使用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;
        int b = 0;
        System.out.println(a/b);
    } catch (Exception e) {
        e.printStackTrace();
        LOGGER.error("功能异常" + e);
    }
}

 注意xml文件中

输出到控制台配置标志:

JAVA日志技术 & Logback_jar包_03

输出到系统文件配置标志:

JAVA日志技术 & Logback_日志框架_04

 文件输出路径:

         <file>C:/code/itheima-data.log</file>

到该路径打开文件后:

JAVA日志技术 & Logback_jar包_05

4.日志级别

 用于控制系统中哪些级别的日志输出,只输出级别不低于设定级别的日志信息

TRACE < DEBUG < INFO < WARN < ERROR

ALL:打开全部日志信息

OFF:关闭全部日志信息  

默认级别是debug(大小写不区分)  

JAVA日志技术 & Logback_日志框架_06

  • TRACE 级别最小,打印信息最为详细,一般不会使用。
  • DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息
  • INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
  • WARN  表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
  • ERROR 级别最大,打印信息最为简略


标签:JAVA,框架,logback,日志,Logback,log4j,级别
From: https://blog.51cto.com/u_16179624/7412892

相关文章

  • 走进JavaScript基础语法
    点击链接走进前端学习:https://blog.csdn.net/qq_53810245/article/details/116831968@目录JavaScript1、概述2、基本语法入门2.1定义变量2.2浏览器控制台使用在这里插入图片描述2.3数据类型1.变量命名:以$或_开头标识2.number:3.字符串:'abc',''abc''4.布尔值:true,false5.逻......
  • 项目八股[日志系统]
    日志系统涉及到的C++特性语法用了一个锁+两个条件变量,跟线程池不一样只用了一个锁一个条件变量C++11提供的condition_variable类是一个同步原语,它能够阻塞一个或者多个线程,直到另一线程修改共享变量并通知condition_variable。对比POSIX的pthread_cond,pthread移植性好,condi......
  • 无涯教程-JavaScript - IMLN函数
    描述IMLN函数以x+yi或x+yj文本格式返回复数的自然对数。复数的自然对数为-$$\ln(x+yi)=\ln\sqrt{x^2+y^2}+i\tan^{-1}\left(\frac{y}{x}\right)$$语法IMLN(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichy......
  • 所以说,java的“方法”有点儿类似于C++的"函数"吧
    两个语言的区别就是,C++如果函数写在下面的话,要在上面注释:而java的方法若写在下面的话,要加static,然后不管怎样,前面一定要加public......
  • java 支持 超大上G,多附件上传技术
    ​ 之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。  但无论插件再怎么灵活,也难以应付所有的需求,比......
  • Java泛型对象在http请求和响应对象中的封装
    Java泛型对象在http请求和响应对象中的封装publicclassMySystemBaseResVo<T>{//注意:类的后面需要带上<T>,否则数据无法封装privateStringerr_no;privateStringerr_tips;privateTdata;publicStringgetErr_no(){returnerr_no;}......
  • 无涯教程-JavaScript - IMEXP函数
    描述IMEXP函数以x+yi或x+yj文本格式返回复数的指数。复数的指数为-$$e^{((x+yi)}=e^xe^{yi}=e^x(\cosy+i\siny)$$语法IMEXP(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichyouwanttheexponential.Requir......
  • JAVASE 第三天
    JAVASE基本的Dos命令#盘符切换 D:#查看当前目录下的所有文件dir#切换目录(/d换盘符写在cd后)cd文件夹#返回上一级cd..#清理屏幕cls#打开应用calc计算机,notepad记事本,mspaint画图#ping命令可以获得IP地址延迟一般用来测试网络,是否正常pingwww.baidu.com......
  • java 支持 超大上G,多附件上传示例解析
    ​ 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。先说下要求:PC端全平台支持,要求支持Windows,Mac,Linux支持所有浏览器。支持文件批量上传支持文件夹上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W......
  • JavaNote04-数组与排序算法
    1.数组的概述1.1数组的概念数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组中的概念:数组名、下标(或索引)、元素、数组的长度数组的特点:数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基......