• (六)Spring Boot之日志配置-logback和log4j2


    一、简介

    • 支持日志框架Java Util Logging, Log4J2 and Logback默认是使用logback
    • 配置方式:
    1. 默认配置文件配置

    2. 引用外部配置文件配置

    二、默认配置文件配置(不建议使用:不够灵活,对log4j2等不够友好)

    • # 日志文件名,比如:roncoo.log,或者是 /var/log/roncoo.log

    logging.file=roncoo.log
    • # 日志级别配置,比如: logging.level.org.springframework=DEBUG

    logging.level.*=info
    
    logging.level.org.springframework=DEBUG

    三、 引用外部配置文件

       3.1  logback配置方式:

    spring boot默认会加载classpath:logback-spring.xml或者classpath:logback-spring.groovy

     

         3.1.1 使用自定义配置文件,配置方式为:

    #主配置文件,配置了这个会优先读取里面的属性覆盖主配置文件的属性
    spring.profiles.active=dev
    server.port=8888


    logging.config=classpath:logback-all.xml
    • 注意:不要使用logback这个来命名,否则spring boot将不能完全实例化
    •  logback-all.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <!-- 文件输出格式 -->
        <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
        <!-- test文件路径 -->
        <property name="TEST_FILE_PATH" value="c:/opt/roncoo/logs" />
        <!-- pro文件路径 -->
        <property name="PRO_FILE_PATH" value="/opt/roncoo/logs" />
    
        <!-- 开发环境 -->
        <springProfile name="dev">
            <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <pattern>${PATTERN}</pattern>
                </encoder>
            </appender>
            
            <logger name="com.roncoo.education" level="debug"/>
    
            <root level="info">
                <appender-ref ref="CONSOLE" />
            </root>
        </springProfile>
    
        <!-- 测试环境 -->
        <springProfile name="test">
            <!-- 每天产生一个文件 -->
            <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- 文件路径 -->
                <file>${TEST_FILE_PATH}</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!-- 文件名称 -->
                    <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
                    <!-- 文件最大保存历史数量 -->
                    <MaxHistory>100</MaxHistory>
                </rollingPolicy>
                
                <layout class="ch.qos.logback.classic.PatternLayout">
                    <pattern>${PATTERN}</pattern>
                </layout>
            </appender>
            
            <root level="info">
                <appender-ref ref="TEST-FILE" />
            </root>
        </springProfile>
    
        <!-- 生产环境 -->
        <springProfile name="prod">
            <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${PRO_FILE_PATH}</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
                    <MaxHistory>100</MaxHistory>
                </rollingPolicy>
                <layout class="ch.qos.logback.classic.PatternLayout">
                    <pattern>${PATTERN}</pattern>
                </layout>
            </appender>
            
            <root level="warn">
                <appender-ref ref="PROD_FILE" />
            </root>
        </springProfile>
    </configuration>
    • application.properties配置文件中的spring.profiles.active=dev 一定要配置,否则不起作用。

     

       3.2   log4j配置

    • 去除logback的依赖包,添加log4j2的依赖包

        <!-- 除去logback支持 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    <!-- 使用log4j2,该包paren标签中已经依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
    • 在application.properties中添加日志文件

    #主配置文件,配置了这个会优先读取里面的属性覆盖主配置文件的属性
    spring.profiles.active=dev
    server.port=8888
        
    logging.config=classpath:log4j2-dev.xml
    • log4j2-dev.xml

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <properties>
            <!-- 文件输出格式 -->
            <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
        </properties>
    
        <appenders>
            <Console name="CONSOLE" target="system_out">
                <PatternLayout pattern="${PATTERN}" />
            </Console>
        </appenders>
        
        <loggers>
            <logger name="com.shyroke"  level="debug" />
            <root level="info">
                <appenderref ref="CONSOLE" />
            </root>
        </loggers>
    
    </configuration>
    • 测试环境和生产环境的配置参考logback的配置

    四、比较

    性能比较Log4J2 Logback 都优于 log4j(不推荐使用)

    配置方式:Logback最简洁spring boot默认推荐使用

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Java-LockSupport
    Kafka Eagle 安装
    Kafka shell
    python pip 使用
    Kafka 集群部署
    Kafka 概述
    DockerFile 简单使用
    《深入理解Java虚拟机》读书笔记
    linux安装redis
    Java多线程基础知识例子
  • 原文地址:https://www.cnblogs.com/shyroke/p/8018682.html
Copyright © 2020-2023  润新知