Log4j2配置及使用
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
- 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.
- If no system property is set the YAML ConfigurationFactory will look for log4j2-test.yaml or log4j2-test.yml in the classpath.
- If no such file is found the JSON ConfigurationFactory will look for log4j2-test.json or log4j2-test.jsn in the classpath.
- If no such file is found the XML ConfigurationFactory will look for log4j2-test.xml in the classpath.
- If a test file cannot be located the YAML ConfigurationFactory will look for log4j2.yaml or log4j2.yml on the classpath.
- If a YAML file cannot be located the JSON ConfigurationFactory will look for log4j2.json or log4j2.jsn on the classpath.
- If a JSON file cannot be located the XML ConfigurationFactory will try to locate log4j2.xml on the classpath.
- If no configuration file could be located the DefaultConfiguration will be used. This will cause logging output to go to the console.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR">
<!--Configuration 配置项
status:log4j本身的日志级别, “trace”, “debug”, “info”, “warn”, “error” and “fatal”
monitorInterval:每隔多少秒从新读取配置文件,可以在不重启的情况下修改配置-->
<Appenders>
<!--Appenders定义日志输出,有Console、File、RollingRandomAccessFile、MongoDB、Flume 等
有Console:输出源到控制台
File:将日志输出到文件,通过fileName指定存储到的文件(目录不存在会自动创建)
RollingRandomAccessFile:也是写入文件,但可以定义规则按照文件大小或时间等重新创建一个新的日志文件存储;如果是按时间分割需要配合filePattern使用
-->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %F %logger{36} - %msg%n"/>
<!--PatternLayout指定输出日志的格式 -->
</Console>
<File name="debuglog" fileName="./log/debug.log" append="true”>
<!--fileName为存储日志的文件地址;append为是否在已有文件上追加,true为追加,false为重建-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<RollingFile name="customscript" fileName="${LOG_HOME}${FILE_NAME}" filePattern="${LOG_HOME}${FILE_NAME}.%d{yyyy-MM-dd}.log">
<!—filePattern为分割存储的日志的名字;必须加Policies,分割方式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %M %L - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!--日志器,通过LogManager.getLogger(日志器name)的日志器名字决定使用具体哪个日志器
分为根Root日志器和自定义日志器-->
<Root level="ERROR">
<!--当根据名字找不到对应的日志器时,使用Root的日志器
leve:日志输出等级(默认ERROR);TRACE > DEBUG > INFO > WARN > ERROR, ALL or OFF-->
<AppenderRef ref="Console"/>
<!--AppenderRef:关联Appenders中定义的输出规则,可以有多个,日志可以同时输出到多个地方-->
<AppenderRef ref="debuglog"/>
</Root>
<Logger name="customlog" level="INFO" additivity="false">
<!--Logger自定义日志器:
name为日志器的名字,通过LogManager.getLogger(日志器name)获得该日志器连接
additivity:相加性。默认为true,若为true会将当前日志内容也打印到它上面的日志器内,这里上面日志器是Root-->
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称,因为Root Logger没有名称,所以没有输出
%msg 日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如Log4j2Test.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数
fileName 指定当前日志文件的位置和文件名称
filePattern 指定当发生Rolling时,文件的转移和重命名规则
SizeBasedTriggeringPolicy 指定当文件体积大于size指定的值时,触发Rolling
DefaultRolloverStrategy 指定最多保存的文件个数
TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟
TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 KB" />
</Policies>
三、Java
package util; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; public class Log { static final Logger logger_root = LogManager.getLogger(Log.class.getName());//配置文件没配置Log的class名字,所以用默认的Root
static final Logger logger_custom = LogManager.getLogger("customlog");//配置文件定义了customlog,所以用customlog public static void main(String[] args) {
// 记录debug级别的信息
logger_root.debug("This is debug message.");
// 记录info级别的信息
logger_root.info("This is info message.");
// 记录error级别的信息
logger_root.error("This is error message."); // 记录debug级别的信息
logger_custom.debug("This is debug message.");
// 记录info级别的信息
logger_custom.info("This is info message.");
// 记录error级别的信息
logger_custom.error("This is error message.");
}
}
Log4j2配置及使用的更多相关文章
- 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程
转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...
- log4j2配置ThresholdFilter,让info文件记录error日志
日志级别: 是按严重(重要)程度来分的(如下6种): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < ...
- Log4j2配置之Appender详解
Log4j2配置之Appender详解 Appender负责将日志事件传递到其目标.每个Appender都必须实现Appender接口.大多数Appender将扩展AbstractAppender,它 ...
- Log4j2 - 配置
官方文档:http://logging.apache.org/log4j/2.x/index.html 1 概述 Log4j2的配置包含四种方式,其中3种都是在程序中直接调用Log4j2的方法进行配置 ...
- log4j2配置详解
1. log4j2需要两个jar log4j-api-2.x.x.jar log4j-core-2.x.x.jar .log4j和log4j2有很大的区别,jar包不要应错. 2. ...
- 【Log4j2 配置详解】log4j2的资源文件具体怎么配置
可以先附上一个log4j2的资源文件详细内容,对照着看 ### set log levels ### log4j.rootLogger = INFO , C , D , E ### console # ...
- Log4j2 配置笔记(Eclipse+maven+SpringMVC)
Log4j2相关介绍可以百度看下,这里只注重配置Log4j2 能够马上跑起来: 1.pom.xml文件中添加Log4j2的相关Maven配置信息 <!-- log4j2 --> <d ...
- Spring Boot初探之log4j2配置
一.背景 下面讲在使用Spring Boot搭建微服务框架时如何配置log4j2,通过log4j2输出系统中日志信息. 二.添加log4j2的配置文件 在项目的src/main/rescources目 ...
- Log4j2配置与使用
依赖包: <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <depend ...
- spring boot log4j2配置
[传送门]:log4j官网配置文件详解 1. 排除 spring boot 自带的 spring-boot-starter-logging 依赖 <dependency> <gro ...
随机推荐
- 代码: CSS3动画,简单示例(鼠标移上去后,背景图片旋转)
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.mi ...
- log4js_Node.js中的日志管理模块使用
{ "appenders": [ // 下面一行应该是用于跟express配合输出web请求url日志的 {"type": "console" ...
- JS 相等判断 / 类型判断
相等判断 JavaScript提供三种不同的值比较操作: 严格相等 ("triple equals" 或 "identity"),使用 === , 宽松相等 ( ...
- JConsole 配置
Tomcat 1:修改catalina.sh文件如下 JAVA_OPTS="-Djava.rmi.server.hostname=XXX.XXX.XXX.XXX -Dcom.sun.mana ...
- java通过过滤器 设置跨域允许
前人种树:https://www.cnblogs.com/CBDoctor/p/4235082.htmlhttps://blog.csdn.net/yuting0787/article/details ...
- 2018SDIBT_国庆个人第三场
A - A CodeForces - 1042A There are nn benches in the Berland Central park. It is known that aiai peo ...
- django403错误(转)
原文:http://blog.sina.com.cn/s/blog_60ccc6e101011ku0.html 处理过程 1.按提示及google结果修改setting.py,在MIDDLEWARE_ ...
- 几道关于springboot、springCloud的面试题。
什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(propertites或yml文件) 创建独立的spring引用程序main方法运行 嵌入的tom ...
- 关于nginx多层uptstream转发获取客户端真实IP的问题
因为公司有个需求需要获取客户端的真实IP,前端是haproxy,后面是nginx,本来这个需求不难完成,但是难就难在是https请求也就是ssl 由于个人水平有限,在网上爬了很多资料,刚开始的ha是通 ...
- 自行编译mwan加入openwrt里
参考源文:http://www.right.com.cn/forum/thread-124449-1-1.html 本例以 opoenwrt 12.09正式版为例,原软件来自openwrt 英文论坛: ...