log4j2配置日志文件以时间方式显示
来源:互联网 发布:c语言 void main 编辑:程序博客网 时间:2024/06/06 13:14
===背景===
很多时候,程序的log日志需要有相应的时间,以便跟踪和维护。java程序,使用log4j创建有时间的log文档。(PS:源码来自小强,不过技能倒是get到了,非常的实用)
===jar包准备两种方法===
====普通工程直接下载拷贝实用jar包====
log4j-api-2.6.2, log4j-core-2.6.2,log4j-slf4j-impl-2.6.2,slf4j-api-1.7.21,dom4j-2.0.0-RC1(版本不同也可以)
我的百度云盘, [http://pan.baidu.com/s/1jHTWye6 点击进入下载jar包]
====Maven工程,添加maven依赖====
<source lang="xml">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.log4j2</groupId>
<artifactId>log4j2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0-RC1</version>
</dependency>
</dependencies>
</project>
</source>
===log4j2.xml文件准备===
#初级配置如下,将log4j2.xml文件放到src目录下
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%c,%M:%L] %n%-level: %msg%n"/>
</Console>
<File name="Logfile" fileName="Logs/Log_time.txt" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %level [%c,%M,%L]: %msg%n"/>
</File>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Logfile"/>
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
</source>
===Java修改xml节点fileName文件名===
<source lang="java" line>
package com.tool.util;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Log4j2Util {
public boolean InitLog4j2(String time){
boolean init=false;
InputStream inputStream = null;
try {
inputStream=changeXML(time);
if(inputStream!=null){
ConfigurationSource source = new ConfigurationSource(inputStream);
Configurator.initialize(null, source);
init=true;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return init;
}
private InputStream changeXML(String time){
SAXReader reader = new SAXReader();
InputStream inputStream = null;
try {
Document doc = reader.read(getClass().getResourceAsStream("/log4j2.xml"));
Element root=doc.getRootElement();
List<Element> childElements = root.elements();
for (Element child : childElements) {
if( child.getName().equals("appenders")){
Element ele_File= child.element("File");
Attribute attr=ele_File.attribute("fileName");
attr.setValue("Logs/Log_"+time+".txt");
}
}
inputStream= new ByteArrayInputStream(doc.asXML().getBytes("UTF-8")) ;
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
}
</source>
===生成带有时间的log.txt文件Demon===
<source lang="java" line>
package com.tool.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.tool.util.Log4j2Util;
public class TestLog4j2 {
public static void main(String[] args) {
String timekey=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MMdd_HHmm_ss");
timekey=sdf.format(new Date());
Log4j2Util init = new Log4j2Util();
if (!init.InitLog4j2(timekey)) {
System.out.println("初始化loger失败");
return;
}
Logger logger = LoggerFactory.getLogger(TestLog4j2.class);
logger.info("hello world");
new T1().say();
new T2().Sing();
logger.info("Kobe");
}
}
</source>
===效果图===
[[文件:log4j2效果图.jpg]]
很多时候,程序的log日志需要有相应的时间,以便跟踪和维护。java程序,使用log4j创建有时间的log文档。(PS:源码来自小强,不过技能倒是get到了,非常的实用)
===jar包准备两种方法===
====普通工程直接下载拷贝实用jar包====
log4j-api-2.6.2, log4j-core-2.6.2,log4j-slf4j-impl-2.6.2,slf4j-api-1.7.21,dom4j-2.0.0-RC1(版本不同也可以)
我的百度云盘, [http://pan.baidu.com/s/1jHTWye6 点击进入下载jar包]
====Maven工程,添加maven依赖====
<source lang="xml">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.log4j2</groupId>
<artifactId>log4j2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0-RC1</version>
</dependency>
</dependencies>
</project>
</source>
===log4j2.xml文件准备===
#初级配置如下,将log4j2.xml文件放到src目录下
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%c,%M:%L] %n%-level: %msg%n"/>
</Console>
<File name="Logfile" fileName="Logs/Log_time.txt" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %level [%c,%M,%L]: %msg%n"/>
</File>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Logfile"/>
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
</source>
===Java修改xml节点fileName文件名===
<source lang="java" line>
package com.tool.util;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Log4j2Util {
public boolean InitLog4j2(String time){
boolean init=false;
InputStream inputStream = null;
try {
inputStream=changeXML(time);
if(inputStream!=null){
ConfigurationSource source = new ConfigurationSource(inputStream);
Configurator.initialize(null, source);
init=true;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return init;
}
private InputStream changeXML(String time){
SAXReader reader = new SAXReader();
InputStream inputStream = null;
try {
Document doc = reader.read(getClass().getResourceAsStream("/log4j2.xml"));
Element root=doc.getRootElement();
List<Element> childElements = root.elements();
for (Element child : childElements) {
if( child.getName().equals("appenders")){
Element ele_File= child.element("File");
Attribute attr=ele_File.attribute("fileName");
attr.setValue("Logs/Log_"+time+".txt");
}
}
inputStream= new ByteArrayInputStream(doc.asXML().getBytes("UTF-8")) ;
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
}
</source>
===生成带有时间的log.txt文件Demon===
<source lang="java" line>
package com.tool.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.tool.util.Log4j2Util;
public class TestLog4j2 {
public static void main(String[] args) {
String timekey=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MMdd_HHmm_ss");
timekey=sdf.format(new Date());
Log4j2Util init = new Log4j2Util();
if (!init.InitLog4j2(timekey)) {
System.out.println("初始化loger失败");
return;
}
Logger logger = LoggerFactory.getLogger(TestLog4j2.class);
logger.info("hello world");
new T1().say();
new T2().Sing();
logger.info("Kobe");
}
}
</source>
===效果图===
[[文件:log4j2效果图.jpg]]
阅读全文
0 0
- log4j2配置日志文件以时间方式显示
- log4j2日志管理xml配置方式实现日志分类输出
- log4j2配置mybatis日志
- log4j2 日志配置
- log4j2日志配置
- log4j2 日志配置实战
- Log4j2日志配置
- slf4j +log4j2 日志 配置
- SpringBoot 配置log4j2日志输出
- log4j2日志web项目配置
- Linux显示以时间降序显示文件
- log4j2 的 xml 配置与程序的调用以解决 java 程序的日志和跟踪
- 以当前时间命名日志文件
- 时间编程--asctime(以字符串方式显示时间)
- 以二进制方式打开文件并显示
- 如何配置log4j2日志记录至数据库
- log4j2配置输出日志到Kafka
- Spring Boot 日志配置 logback和log4j2
- Maven阿里云镜像地址
- STM32一直死在r1,[r0,#0x808]
- 理解cout“从右至左入栈”
- Python高级之——浅拷贝、深拷贝(deepcopy、copy的区别)
- 好玩的线上检测代码工具-codewars(4)
- log4j2配置日志文件以时间方式显示
- webpack解惑:require的五种用法
- 【HDU
- java基础学习总结——基础语法1
- angular学习笔记(二)
- Oracle的Sql语句一些知识点(2)
- HDU-2017"百度之星"程序设计大赛-初赛(B)-1002-Factory
- grep命令使用-正则表达式(zz)
- 向TreeSet集合中添加元素出现ClassCastException问题