概述
作为一个实用主义者,我喜欢在理解基本原理后快速的搭建系统,当系统运行起的时候有那种愉悦和兴奋。最近在完善公司框架,从最基本的日志系统开始。
java日志系统比较流行的是log4j,slf4j和logback,本来打算用logback的,已经把相关下载下来,结果突然发现log4j2,也就是log4j的升级版本。bilibili,种种云log4j2的优点。
ok,着手搭建,我用的是maven进行的。
maven的基础pom配置
定义版本号log4j2.version
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springversion>3.2.3.RELEASE</springversion>
<log4j2.version>2.0.2</log4j2.version>
</properties>
配置log4j2
<!-- log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
maven的公用pom中引进log4j2
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
现在已经配置好了日志,那么我们即将使用日志系统进行日志记录。日志分为xx几类,不同类有各个优先级,这个不懂的自己恶补下哦。
要使用日志系统,就需要进行相关配置,这个不用我多说了叁。在log4j2中配置文件可以为.xml,.json或者.jsn,默认情况下,系统选择configuration文件的优先级如下:
log4j-test.json或者log4j-test.jsn
log4j2-test.xml
log4j.json或者log4j.jsn
log4j2.xml
本文以log4j2.xml的方式进行配置。直接上代码:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<!-- 配置日志输出文件名字 追加读写 -->
<RollingFile name="ERROR" fileName="logs/error.log"
filePattern="log/$${date:yy-mm}/error-%d{mm-dd-yyyy}-%i.log.gz">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出格式 -->
<PatternLayout
pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} 'Line-' %L %M - %msg%xEx%n" />
<SizeBasedTriggeringPolicy size="10MB" />
</RollingFile>
<RollingFile name="INFO" fileName="logs/info.log"
filePattern="log/$${date:yy-mm}/info-%d{mm-dd-yyyy}-%i.log.gz">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出格式 -->
<PatternLayout
pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} 'Line-' %L %M - %msg%xEx%n" />
<SizeBasedTriggeringPolicy size="50MB" />
</RollingFile>
<!-- 输出到控制台的配置 -->
<Console name="STDOUT" target="SYSTEM_OUT">
<!-- 输出格式 -->
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
</Console>
</Appenders>
<Loggers>
<!-- 记录器输出文件为info级别 -->
<!-- <logger name="com.hdd" level="debug" additivity="false"> <AppenderRef
ref="STDOUT"/> </logger> 记录器输出文件为info级别 <logger name="com.hdd.test.App2"
level="info" additivity="false"> <AppenderRef ref="A1"/> </logger> -->
<!-- 根 控制台输出级别 -->
<Root level="debug">
<AppenderRef ref="ERROR" />
<AppenderRef ref="INFO" />
<AppenderRef ref="STDOUT" />
</Root>
</Loggers>
</Configuration>
在以上配置文件我们配置错误输出、info级别输入以及控制台输出。注意
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
这行代码对输出的等级进行了限制,这样过滤配置后只有错误信息会输出到相关文件。
关于配置的详细介绍,网上有太多文章,我就不再赘述。
配置完成后我们需要编写代码验证。写一个测试类App2 :
public class App2 {
static Logger logger = LogManager.getLogger(App2.class);
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
logger.trace("trace message " + i);
logger.debug("debug message " + i);
logger.info("info message " + i);
logger.warn("warn message " + i);
logger.error("error message " + i);
logger.fatal("fatal message " + i);
logger.fatal("占位符 {} ",i);
}
System.out.println("Hello World! 2");
}
}
通过运行该类,观察类生成的文件,可以看到相关的结果。
以上介绍了从配置到实际使用log4j2运行的过程,那么我们再什么地方应该使用日志,日志规范有应该是怎样的?关于日志使用规范,我觉得下面文章说的比较好,大家可以参考:
http://blog.csdn.net/a6733417...
参考资料:
http://blog.csdn.net/column/d...
http://www.360doc.com/content...
最后
以上就是明理电灯胆为你收集整理的 log4j2搭建并使用的全部内容,希望文章能够帮你解决 log4j2搭建并使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复