• Logback的使用


    鉴于之前使用Log4j遇到了严重的漏洞问题:Apche log4j远程代码执行漏洞,漏洞编码:RCE(CVE-2021-44228),所以更换为Logback

    简介

    Logback是一个Java开源日志框架,以继承改善log4j为目的而生,是log4j创始人设计的另一个开源日志组件。
    它声称有极佳的性能,占用空间更小,且提供其他日志系统缺失但很有用的特性。

    Logback是一个日志实现框架,实现自SLF4j(Simple Logging Facade for Java),SLF4J 即:Java的简单日志门面,它不是具体的解决方案,它只服务于各种各样的日志系统。
    SLF4J最常用的日志实现框架是:log4j、logback。一般有:slf4j + log4j、slf4j + log4j2、slf4j + logback三种日志组合。

    SLF4J与其它日志组件调用关系图如下:
    SLF4J与其它日志组件调用关系图

    Logback使用

    logback 分为以下三个模块:

    • logback-core:其它两个模块的基础模块
    • logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
    • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

    如果是Spring Boot项目的话则默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台

    日志级别(Log level):用来控制日志信息的输出,从高到低分为共分为七个等级:

    • off 最高等级,用于关闭所有日志记录。
    • fatal 指出每个严重的错误事件将会导致应用程序的退出。
    • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
    • warm 表明会出现潜在的错误情形。
    • info 一般和在粗粒度级别上,强调应用程序的运行全程。
    • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
    • all 最低等级,用于打开所有日志记录。

    Maven引入:

    注意:spring-boot-starter-parent里已集成logback,可直接使用

    <!--
      引入以下依赖,会自动引入以下jar
      logback-classic.x.x.x.jar
      logback-core.x.x.x.jar
      slf4j-api-x.x.x.jar
    -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    

    Jar包引入:

    JavaSE项目/Plugin项目使用此方式引入

    logback所需jar包

    查找配置文件方式:

    1.logback首先会试着查找logback.groovy文件
    2.当没有找到时,继续试着查找logback-test.xml文件
    3.当没有找到时,继续试着查找logback.xml文件
    4.如果仍然没有找到,则使用默认配置(打印到控制台)

    logback.xml配置:

    Web项目:在工程resources目录下创建logback.xml
    JavaSE项目/Plugin项目:在src目录下创建logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="D:/Siemens/logs"/>
    
    	<!-- Console -->
    	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
    			<pattern>%d[yyyy-MM-dd HH:mm:ss.SSS] [%thread] [%-5level] - Class: %logger{50} Method: %method Line: %line%n%msg%n</pattern>
    		</encoder>
    	</appender>
    	
    	<!-- File -->
    	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                            <!--日志文件输出的文件名-->
                            <FileNamePattern>${LOG_HOME}/customer_module_%d{yyyyMMdd}.log</FileNamePattern>
                            <!--日志文件保留天数-->
                            <MaxHistory>30</MaxHistory>
                    </rollingPolicy>
            
    		<encoder>
    		 	<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    			<pattern>%d[yyyy-MM-dd HH:mm:ss.SSS] [%thread] [%-5level] - Class: %logger{50} Method: %method Line: %line%n%msg%n</pattern>
    		</encoder>
    		
    	        <!--日志文件最大的大小-->
                    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                            <MaxFileSize>10MB</MaxFileSize>
                    </triggeringPolicy>
    	</appender> 
    
    	<!-- 日志输出级别 -->
    	<root level="INFO">
    		<appender-ref ref="STDOUT"/>
    		<appender-ref ref="FILE"/>
    	</root>
    	
    </configuration>
    

    初始化Logger:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private static final Logger log = LoggerFactory.getLogger(YourClass.class);
    

    常用log打印:

    // 信息
    log.info("XXXXXX:{}", Object);
    
    // 警告
    log.warn("XXXXXX:{}", Object);
    
    // 错误
    log.error("XXXXXX:{}", Object);
    
    // 异常信息
    log.error("error_message:", e);
    
  • 相关阅读:
    c语言数组指针
    (4)activiti工作流引擎之uel表达式
    (3)activiti流程的挂起和激活
    (2)java程序走一遍工作流activiti
    (1)activiti认识以及数据库和插件配置
    linux 下路由配置
    lvs-dr+keepalived
    LVS-DR 配置测试
    简单认识TCP/IP协议
    mysql 主从同步-读写分离
  • 原文地址:https://www.cnblogs.com/rollcat/p/16896604.html
Copyright © 2020-2023  润新知