JAVA日志技术 & Logback
  ehrZuhofWJiC 12天前 14 0

为什么需要记录日志?我们不可能实时的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。

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

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

二、使用logback

1.导入jar包

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

JAVA日志技术 & Logback

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

JAVA日志技术 & Logback

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开始执行");
        ("第二行,开始做除法");
        int a = 10;
        int b = 0;
        System.out.println(a/b);
    } catch (Exception e) {
        e.printStackTrace();
        LOGGER.error("功能异常" + e);
    }
}

 注意xml文件中

输出到控制台配置标志:

JAVA日志技术 & Logback

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

JAVA日志技术 & Logback

 文件输出路径:

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

到该路径打开文件后:

JAVA日志技术 & Logback

4.日志级别

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

TRACE < DEBUG < INFO < WARN < ERROR

ALL:打开全部日志信息

OFF:关闭全部日志信息  

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

JAVA日志技术 & Logback

  • TRACE 级别最小,打印信息最为详细,一般不会使用。
  • DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息
  • INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
  • WARN  表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
  • ERROR 级别最大,打印信息最为简略
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 12天前 0

暂无评论

推荐阅读
ehrZuhofWJiC