Заметки об исследовании Spring Boot (2) Интеграция log4j2

Spring Boot Apache Log4j

Заметки об исследовании Spring Boot (2) Интеграция log4j2

1. Введение в log4j2

Хороший вывод журнала может быстро найти проблему при обнаружении проблемы. Поэтому мы сначала интегрировали в него log4j.

Мы используем log4j2, который в принципе ничем не отличается от log4j с точки зрения использования, большая разница в том, чтоlog4j2 больше не поддерживает файл конфигурации свойств и поддерживает файлы в формате xml и json.

2. Добавьте зависимость log4j2

Добавьте зависимости в файл pom:

1<!-- 从parent项目中出去logging这个包,因为我们使用的是log4j2 -->
2<dependency>
3    <groupId>org.springframework.boot</groupId>
4    <artifactId>spring-boot-starter</artifactId>
5    <exclusions>
6        <exclusion>
7            <groupId>org.springframework.boot</groupId>
8            <artifactId>spring-boot-starter-logging</artifactId>
9        </exclusion>
10    </exclusions>
11</dependency>
12<!-- 引入log4j2支持 -->
13<dependency>
14  <groupId>org.springframework.boot</groupId>
15  <artifactId>spring-boot-starter-log4j2</artifactId>
16</dependency>
17
18<dependency>
19    <groupId>org.slf4j</groupId>
20    <artifactId>log4j-over-slf4j</artifactId>
21    <version>1.7.24</version>
22    <exclusions>
23        <exclusion>
24            <artifactId>slf4j-api</artifactId>
25            <groupId>org.slf4j</groupId>
26        </exclusion>
27    </exclusions>
28</dependency>

3. Добавьте файл конфигурации log4j2

1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3    status : 这个用于设置log4j2自身内部的信息输出,可以不设置,
4    当设置成trace时,会看到log4j2内部各种详细输出
5    monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 
6    设置间隔秒数。此处表示每隔600秒重读一次配置文件
7-->
8<Configuration status="OFF" monitorInterval="600">
9
10    <!--日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL-->
11    <!--如果设置为WARN,则低于WARN的信息都不会输出-->
12    <Properties>
13        <!-- 配置日志文件输出目录,此处为项目根目录下的logs文件夹 -->
14        <Property name="LOG_HOME">D:\sysLogs\learning</Property>
15        <property name="FILE_NAME">learningSpringBoot</property>
16    </Properties>
17
18    <Appenders>
19        <!--这个输出控制台的配置-->
20        <Console name="Console" target="SYSTEM_OUT">
21            <!--控制台只输出level及其以上级别的信息(onMatch),
22            其他的直接拒绝(onMismatch)-->
23            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
24            <!--日志输出的格式-->
25            <!--%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n-->
26
27            <PatternLayout pattern="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%5p|%5t|%4c:%L|%m%n"/>
28        </Console>
29
30        <RollingRandomAccessFile name="LEARNING" fileName="${LOG_HOME}/${FILE_NAME}.log"
31                                 filePattern="${LOG_HOME}/backup/${FILE_NAME}_%d{yyyy-MM-dd}_%i.log">
32            <!--%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n-->
33            <PatternLayout pattern="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%5p|%5t|%4c:%L|%m%n"/>
34            <Policies>
35                <TimeBasedTriggeringPolicy interval="1"/>
36                <SizeBasedTriggeringPolicy size="20MB"/>
37            </Policies>
38            <DefaultRolloverStrategy max="10"/>
39        </RollingRandomAccessFile>
40    </Appenders>
41
42    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
43    <Loggers>
44        <Logger name="com.zdran.springboot" level="INFO" additivity="true">
45            <AppenderRef ref="LEARNING"/>
46        </Logger>
47        <Logger name="org.springframework" level="INFO" additivity="true">
48            <AppenderRef ref="LEARNING"/>
49        </Logger>
50        <Logger name="org.apache" level="INFO" additivity="true">
51            <AppenderRef ref="LEARNING"/>
52        </Logger>
53        <Root level="INFO">
54            <Appender-Ref ref="Console"/>
55        </Root>
56    </Loggers>
57
58</Configuration>

Такие подробные примечания не нуждаются в дополнительных пояснениях. . .

в<Property name="LOG_HOME">D:\sysLogs\learning</Property>Есть еще одна настройка, мы можем настроить заполнитель в xml, а затем указать каталог журнала в виде параметров при запуске командной строки. Его можно настроить так:

1<Property name="LOG_HOME">${sys:log4j.path}/learning</Property>
2
3启动命令 java -jar xxx.jar -log4j.path=D:\sysLogs\learning

Если вы используете эту конфигурацию, она сообщит о

1ERROR StatusLogger Cannot access RandomAccessFile java.io.IOException: 文件名、目录名或卷标语法不正确。
2 java.io.IOException: 文件名、目录名或卷标语法不正确。

Эта ошибка вызвана тем, что заполнитель не является допустимым путем, который можно настроить с помощью:


Edit Configurations...

Настройте параметры в параметрах виртуальной машины-Dlog4j.path=D:\sysLogs.

VM options

Пожалуйста, укажите источник
Ссылка на эту статью:Этот курс.com/20180629.Контракт…