inicio de sesión de registro de fachada slf4j, jul, configuración log4j2

1. Marco de registro básico

inserte la descripción de la imagen aquí

2. Tres configuraciones de nivel inferior que se adaptan a slf4j (puede configurar solo una cuando la usa)

(1) Log4j2 está integrado en la fachada slf4j

①configuración pom.xml**

<!--log4j2 - 配置log4j.xml 不需要加slf4j base 配置-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j18-impl</artifactId>
            <version>2.18.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.18.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.18.0</version>
        </dependency>

②Configuración de log4j2.xml**

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
    <!-- 先定义所有的appender -->
    <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
    <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
    <appenders>
        <!-- 这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 这个都知道是输出日志的格式 -->
            <PatternLayout pattern="[%d{HH:mm:ss.SSS}] [%-5p] %l - %m%n"/>
        </Console>

        <!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
        <!-- append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->
        <File name="LOG" fileName="log/test.log" append="true">
            <PatternLayout pattern="[%d{HH:mm:ss.SSS}] [%-5p] %l - %m%n"/>
        </File>

        <!-- 添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->
        <File name="ERROR" fileName="logs/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{yyyy.MM.dd 'at' HH:mm:ss z}] [%-5p] %l - %m%n"/>
        </File>

        <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="RollingFile" fileName="logs/web.log" filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="[%d{yyyy-MM-dd 'at' HH:mm:ss z}] [%-5p] %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="2MB"/>
            </Policies>
        </RollingFile>
    </appenders>

    <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!-- 过滤掉自定义的的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO" additivity = "false"/>
        <logger name="org.mybatis" level="INFO"/>
        <!--  建立一个默认的root的logger -->
        <root level="info">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="ERROR" />
            <appender-ref ref="LOG"/>
        </root>

    </loggers>
</configuration>

(2).logback está integrado en la fachada slf4j**

①configuración pom.xml**

<!-- slf4j base基础门面框架-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.0</version>
</dependency>

<!-- logback// logback-core已经在classic中被包含,需要加 slf4j base的maven配置 -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.0</version>
</dependency>

②configuración y comentarios de logback.xml**

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--configuration有三个常用属性:scan="true" scanPeriod="60 seconds" debug="false"
scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <springProperty scope="context" name="logName" source="logging.file.name" defaultValue="log.log" />
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="${logName}" />
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    <!--<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n" />-->
    <!--格式化输出:%d:日期,%-4relative:程序启动到创建日志记录的时间,毫秒, %-5level:日志级别,%thread:线程名,%msg:日志消息,%line:行号,%n:换行符 -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative %-5level [%thread - - - - -][traceId-%X{traceId:-}] %logger{50} >> %msg:%line%n" />
    <property name = "LOG_NAME" value="log"/>
    <property name = "BASE_HOME" value="F:\\tools\\javaproject\\firstproject\\java_project_all\\log\\"/>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender" target = "system.err">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${
    
    LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE_BASE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->
            <FileNamePattern>${
    
    BASE_HOME}/${
    
    LOG_NAME}-info-%d{
    
    yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>100</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d:日期,%-4relative:程序启动到创建日志记录的时间,毫秒, %-5level:日志级别,%thread:线程名,%msg:日志消息,%line:行号,%n:换行符 -->
            <pattern>%d{
    
    yyyy-MM-dd HH:mm:ss.SSS} %-4relative %-5level [%thread - - - - -][traceId-%X{
    
    traceId:-}] %logger{
    
    50} >> %msg:%line%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 输出到日志文件 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${
    
    BASE_HOME}/${
    
    LOG_NAME}.%d{
    
    yyyy-MM-dd}.%i.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
            <MaxFileSize>50MB</MaxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>${
    
    LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 自定义logger -->
    <logger name="com.dispart" level="debug" additivity="false">
        <appender-ref ref="console" />
    </logger>
    <!--sql语句执行输出-->
    <logger name="org.apache.ibatis" level="debug" additivity="false">
        <appender-ref ref="console" />
    </logger>
    <!--控制台日志输出级别 -->
    <root level="info" additivity="false">
        <appender-ref ref="console" />
        <appender-ref ref="FILE"/>
        <appender-ref ref="FILE_BASE"/>
    </root>
</configuration>

(3) El framework jdk integra slf4j**

① Configuración de maven (solo es necesario configurar maven)

<!-- slf4j base基础门面框架-->
<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-api</artifactId>
     <version>2.0.0</version>
 </dependency>
         <!-- jdk 日志整合到slf4j中 需要加 slf4j base的maven配置-->
 <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-jdk14</artifactId>
     <version>2.0.1</version>
 </dependency>

3. Código de prueba (tenga en cuenta que solo se debe configurar una implementación subyacente de la integración de s y lf4j a la vez)**

public class BaseLogService {
    
    
    private static final Logger LOGGER = LoggerFactory.getLogger(BaseLogService.class);

    public static void main(String[] args) {
    
    
        LOGGER.info("base 日志 测试!");
        LOGGER.error("base 日志 测试!");
        LOGGER.warn("base 日志 测试!");
        LOGGER.debug("base 日志 测试!");
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43795840/article/details/126881262
Recomendado
Clasificación