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输出如下:

时间: 2024-12-29 06:59:04

Log4j2 — Log4j2导入、LogEvent、配置文件编写及路径的相关文章

Grunt配置文件编写技巧及示范

受益于grunt这么久,继续分享关于grunt的一些技巧.grunt确实是前端项目中不可或缺的提升效率的工具.第一次接触grunt是在去年7月份,开始有接触LESS.Coffee Script的等需要编译的模板才能使用的,所以grunt就有了很大的用处.当然除了编译,还有一部分的工作就是压缩,grunt常用的任务就是压缩JS.CSS,检查语法错误,同时也可以保证质量压缩图片(删除图片多余信息). 使用起来也很简单,基于node,所以我们就可以通过js来控制这些文件.唯一需要做的是编写配置文件,做

juniper的49个配置文件的存储路径

[email protected]% cd /config/  (0到3及rescure文件) [email protected]% cd /var/db/config/(4到49的相关文件) SNMP设置: [edit snmp] community cardinals {    authorization read-only;    clients {        10.210.14.0/24;    }} 链路端口端开后,设备会亮红灯,可以通过如下命令除掉红灯: root#set cha

Java配置文件读取和路径设置

记录几种读取配置文件的方法,以及配置文件的放置路径. 1.使用PropertiesLoaderUtils工具类(springframework包提供) 优点:实时加载配置文件,修改后立即生效,不必重启 配置文件至于classpath中(与class文件放在一起,如果打jar包需打到包内),代码如下: private static void springUtil(){ Properties props = new Properties(); while(true){ try { props=Pro

eclipse中可以导入其它工具编写的RobotFramework脚本吗?

在Robotframework的官方网站中,提供了非常多的编辑RF的工具.比如Ride,eclipse,sublime,notepad++等. 网上查到的资料,大部分都是Ride这个编辑工具的使用.在博主这里,当切换为Eclipse来编写RF脚本时,就会有疑惑:以前用ride写的脚本,在eclipse中能看吗能用吗? 答案是:可以的. 为啥呢? 因为无论是哪个编辑工具写的RF脚本,全部都是遵循了RF的脚本编写语法,而RF只有一套语法,并不会因为编辑工具不同就改变规则. 所以RF在不同的编辑工具中

Mybatis导入原生配置文件

在Spring-Mybatis中导入Mybatis原生配置文件 在sqlSessionFactory Bean中设置设置configLocation属性 <property name="configLocation" value="classpath:mybatis.xml"></property> 在mybatis.xml中添加配置 <?xml version="1.0" encoding="UTF-8&

Spring Log4j2 log4j2.xml

<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId>

nginx查看配置文件nginx.conf路径

当你执行 nginx -t 得时候,nginx会去测试你得配置文件得语法,并告诉你配置文件是否写得正确,同时也告诉了你配置文件得路径: # nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful 配置文件 /etc/nginx/ngi

js相对路径相关(比如:js中的路径依赖导入该js文件的路径)

问题描述: 前几天调用同事的js接口文件,在他自己的html测试页面ok,在我这边调用时出现问题. debug过程中,将该测试html移到其他位置都不行,放到原html测试页面同层次路径下是OK的. 解决过程: 很疑问啊,用F12调试下,在调用的js中,发现xmlhttp.status返回状态是404,靠,原来是找不到文件. 仔细看了下,在js中看到如下代码:[var requestURL = "../servlet/ajaxServlet.jsp";]坑爆了, 模糊记得js中引用路径

spring boot 导入xml配置文件所需注解和禁用自动配置类的注解

导入XML配置 如果您绝对必须使用基于XML的配置,我们建议您仍然从一个@Configuration类开始.然后您可以使用@ImportResource注释来加载XML配置文件. 禁用特定的自动配置类 如果您发现不需要的特定自动配置类正在应用,则可以使用exclude属性@EnableAutoConfiguration来禁用它们,如以下示例所示: import org.springframework.boot.autoconfigure.*; import org.springframework