小白又来记录心得了
对于小白来说,好难哇,控制台输出很简单,但是想输出到文件里面,研究测试了好久。
使用依赖包:
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
初始化Log对象:
private static org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger(MyLogHelper.class);
xml文件配置:
文件名为log4j2.xml直接存放在资源文件夹resources下面
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<properties>
<property name="LOG_HOME">logs</property>
<property name="LOG_BACKUP">backup</property>
<property name="FILE_NAME">log</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
</Console>
<!--name写MyLogHelper为自己封装的类名-->
<RollingFile name="MyLogHelper" fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/${LOG_BACKUP}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
immediateFlush="true" append="true">
<PatternLayout>
<!--
#pattern格式的简单介绍:
#%d{HH:mm:ss.SSS} 表示输出到毫秒的时间,如果不加大括号默认是到毫秒级别
#%r:程序启动时间毫秒数
#%t:输出日志线程名称
#%-5p:日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补空格
#%c:输出日志的logger实例名称,取决于getLogger(String name)中的name属性,即打印logger时的tag;大括号中的2表示显示的层数。例如,对于name为com.test.be.Main的logger,配置为%c{2}显示be.Main,配置为%c{1}则显示Main。
#%m:日志内容描述
#%n:换行,一般和%m联合使用:%m%n
#%l:语句所在的详细位置, 包括类名、方法名、文件名、行号
#%L:行号,注意和上面小写的区别,这个只有行号,不包含其他信息
#%F:所在的类文件名,如Main.java
#%M:所在方法名
-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %msg%n</pattern>
</PatternLayout>
<Policies>
<!-- 每个日志文件最大5MB 默认10M-->
<SizeBasedTriggeringPolicy size="15MB" />
<!--一天备份一个文件,配合filePattern使用-->
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<!--最多保存20个备份文件-->
<DefaultRolloverStrategy max="20" />
</RollingFile>
</Appenders>
<Loggers>
<!-- com.tyyq.log为自己封装写日志类包路径, MyLogHelper为自己封装的类名-->
<logger name="com.tyyq.log" level="trace" additivity="true">
<appender-ref ref="MyLogHelper" />
</logger>
<Root level="ERROR">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
MyLogHelper.error("我报错拉!");
MyLogHelper.warn("这是我的警告!");
MyLogHelper.info("这是我说明哦.....");