参考
- CSDN - 详解log4j2(上) - 从基础到实战
- stackoverflow - IntelliJ IDEA won’t find log4j2.xml after maven build
- CSDN - Maven生成可以直接运行的jar包的多种方式
log4j 2 maven
在pom.xml里添加:
1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
log4j2.xml
在src/main目录下新建一个文件夹resources,在里面新建一个log4j2.xml,并_右键resources ➤ Mark Directory as ➤ Resources Root_。由CSDN的参考链接添加以下配置到log4j2.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<Configuration status="WARN" monitorInterval="300">
<properties>
<property name="LOG_HOME">/var/log</property>
<property name="FILE_NAME">Thermal</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile name="MyFile"
fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="mylog" level="trace" additivity="false">
<AppenderRef ref="MyFile"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
注意更改”LOG_HOME”和”FILE_NAME”后面的内容来配置log文件的位置。
编译时带上log4j2.xml
需要在pom.xml拥有这么一段内容:
1
2
3
4
5
6
7
8
9
10
11
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}/classes</targetPath>
<includes>
<include>**/log4j2.xml</include>
</includes>
</resource>
</resources>
</build>
程序内使用log4j
1
private static Logger logger = LogManager.getLogger("mylog");
注意mylog是在log4j2.xml里面的Loggers标签定义的。
打包成一个可运行jar包
pom.xml里添加依赖:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxg.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
注意把<mainClass>
标签里的com.xxg.Main改成自己的有main函数的class的名字(全路径)。
然后用
1
mvn package assembly:single
就可以打包了。