Log4j2 — Log4j2导入、LogEvent、配置文件编写及路径

1. Log4j2的导入        

        首先到http://logging.apache.org/log4j/2.x/download.html 上下载最新的log4j2的jar包,然后再eclipse中加入log4j-api-2.4.1.jar和log4j-core-2.4.1.jar,需要注意的是不要将所有jar都导入工程造成不必要的混乱。

2.LogEvent

左边竖栏是Event的Level,右边横栏是LoggerConfig(即filter)的Level。Yes的意思就是这个event可以通过filter,no的意思就是不能通过filter。

可以看到,INFO级别的Event是无法被ERROR级别的LoggerConfig的filter接受的。所以,INFO信息不会被输出。

3.配置文件编写

 log4j2与以往的log4j有一个明显的不同,其配置文件只能采用.xml, .json或者 .jsn,而不是.properties文件。其格式如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <configuration status="error">
 3     <!--先定义所有的appender-->
 4     <appenders>
 5         <!--这个输出控制台的配置-->
 6         <Console name="Console" target="SYSTEM_OUT">
 7             <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
 8             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
 9             <!--这个都知道是输出日志的格式-->
10             <PatternLayout pattern="%d{HH:mm:ss.SSS}  %-5level  %class{36}  %L %M ==>  %msg%xEx%n"/>
11         </Console>
12         <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
13         <File name="log" fileName="log/test.log" append="false">
14             <PatternLayout pattern="%d{HH:mm:ss.SSS}  %-5level  %class{36}  %L %M ==>  %msg%xEx%n"/>
15         </File>
16         <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
17         <RollingFile name="RollingFile" fileName="logs/app.log"
18                      filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
19             <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
20             <SizeBasedTriggeringPolicy size="50MB"/>
21         </RollingFile>
22     </appenders>
23     <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
24     <loggers>
25         <!--建立一个默认的root的logger-->
26         <root level="trace">
27             <appender-ref ref="RollingFile"/>
28             <appender-ref ref="Console"/>
29         </root>
30     </loggers>
31 </configuration>

4.配置文件名称及路径

(1)放在classpath(src)下,以log4j2.xml命名

    使用Log4j2的一般都约定俗成的写一个log4j2.xml放在src目录下使用。

(2)将配置文件放到别处

    在系统工程里面,将log4j2的配置文件放到src目录底下很不方便。如果能把工程中用到的所有配置文件都放在一个文件夹里面,当然就更整齐更好管理了。但是想要实现这一点,前提就是Log4j2的配置文件能重新定位到别处去,而不是放在classpath底下。

看看文档里怎么说吧:

1.Log4j will inspect the "log4j.configurationFile" system property and, if set,will attempt to load the configuration using the ConfigurationFactory that matches the file extension. 2.If no system property is set the JSON ConfigurationFactory will look for log4j2-test.json or log4j2-test.jsn in the classpath. 3.If no such file is found the XML ConfigurationFactory will look for log4j2-test.xml in the classpath. 4.If a test file cannot be located the JSON ConfigurationFactory will look for log4j2.json or log4j2.jsn on the classpath. 5.If a JSON file cannot be located the XML ConfigurationFactory will try to locate log4j2.xml on the classpath. 6.If no configuration file could be located the DefaultConfiguration will be used. This will cause logging output to go to the console.

可见,如果没有设置"log4j.configurationFile" system property的话,application将在classpath中按照如下查找顺序来找配置文件:

  log4j2-test.json 或log4j2-test.jsn文件

  log4j2-test.xml文件

  log4j2.json 或log4j2.jsn文件

  log4j2.xml文件

如果想将配置文件重命名并放到别处,就需要设置系统属性log4j.configurationFile。

设置的方式是在VM arguments中写入该属性的key和value:

-Dlog4j.configurationFile="D:\learning\blog\20130115\config\LogConfig.xml"

在myeclipse中,就是 右键-》run as -》run configuration-》右边窗口的“(x)=argument”=》VM arguments

然后写入上述key和value即可。

-D是参数,不能缺少。

测试

在“D:\learning\blog\20130115\config\”路径下编写文件:

root LoggerConfig的Level设为INFO。

在myeclipse中写入log4j.configurationFile系统属性:

测试的java程序如上文,在此不再重复。运行,console输出如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GuZhenYin

ASP.NET Core使用静态文件、目录游览与MIME类型管理

前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好...

28510
来自专栏软件工程师成长笔记

Checkstyle提示

解决方法:在方法前得注释中添加这样一行:* @throws Exception if has error(异常说明)

972
来自专栏FreeBuf

使用Python以及C++简单绕过反爬虫机制

0x00 某些网站有反爬虫的机制 对于刚学习了几天python的我,对爬虫颇有兴趣,但是某些“想要的”网站上具有反爬虫机制,如果说使用延迟或者代理,这样的效率并...

22410
来自专栏性能与架构

微信小程序开发思路

小程序还没有完全开放,不能真实体验,但通过文档和开发工具,可以了解到他的开发思路 下面就介绍下小程序的开发方式,希望能帮助有兴趣的朋友对整体思路有个快速了解 整...

3418
来自专栏Android 研究

Android插件化基础3----Android的编译打包流程详解

.apk文件其实就是一个压缩包,把文件的后缀改成.zip,用压缩软件解压搜就可的下图(我是mac)

761
来自专栏桥路_大数据

Python3使用Scrapy快速构建第一款爬虫

3387
来自专栏hotqin888的专栏

beego利用casbin进行权限管理——第一节 起步、测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1191
来自专栏老马说编程

(59) 文件和目录操作 / 计算机程序的思维逻辑

前面两节我们介绍了如何通过流的方式读写文件内容,本节我们介绍文件元数据和目录的一些操作。 文件和目录操作最终是与操作系统和文件系统相关的,不同系统的实现是不一样...

17110
来自专栏编程直播室

使用Ionic2开发Todo应用0 开始之前1 创建新的Ionic 2工程2. 设置主页(Home page)3 持久化数据保存4 总结

2215
来自专栏猿天地

Spring Boot Web 静态文件缓存处理

采用Spring Boot + Freemarker开发Web项目时,由于一些静态文件比较大,如果是在PC上访问影响不大,当在手机上访问时,特别是用流量访问时速...

41412

扫码关注云+社区