默认配置

不推荐使用默认配置文件配置,不够灵活,对Log4j2日志框架等不够友好

日志默认文件名如:my.log,或者是/var/log/my.log

日志级别配置如:

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

logback

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

1.application.properties

logging.config=classpath:logback-my.xml

2.配置logback-my.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="H:/My/Test/log" />
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="H:/My/Prod/log" />
 
<!-- 开发环境 -->
<springProfile name="dev">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${PATTERN}</pattern>
        </encoder>
    </appender>
 
    <logger name="com.benzhu.xyz" 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}/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="PROD_FILE" />
    </root>
</springProfile>
</configuration>

3.日志的使用

private static final Logger LOG = LoggerFactory.getLogger(类名.class);

//方法中用下面的方法调用。
LOG.info("导航到index!");

4.结构图

log4j2

1.配置pom.xml文件

pom.xml

<dependency>
  <!– 下面的两句本来就有的 给参考加入的地方 –>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
<!– 去除logback的依赖包 –>
  <exclusions>
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<!– 使用log4j2 –>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2.在classpath添加log4j2.xml或者log4j2-spring.xml

1)开发环境的时候控制台输出日志配置

<?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.no1.cz" level="debug" />
    <root level="info">
        <appenderref ref="CONSOLE" />
    </root>
</loggers>
</configuration>

2)测试环境输入到文件的日志配置

<?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>
 
<!--先定义所有的appender -->
<appenders>
    <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
    <RollingFile name="TEST-FILE" fileName="D:/My/Test/test.log"
        filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
        <PatternLayout
            pattern="${PATTERN}-%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
        <SizeBasedTriggeringPolicy size="50MB" />
        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
        <DefaultRolloverStrategy max="20" />
    </RollingFile>
</appenders>
 
<loggers>
    <logger name="com.no1.cz" level="debug" />
    <root level="info">
        <appenderref ref="TEST-FILE" />
    </root>
</loggers>
</configuration>

3.当需要自定义文件的时候

在application.properties中的一个配置。

比如在application-dev.properties中配置logging.cofig=classpath:log4j2-dev.xml。

然后再在og4j2-dev.xml写上面的内容。

比较

性能比较:log4j2和logback都优于log4j(不推荐使用)

配置方式:logback最简洁,Spring Boot默认,推荐使用。