Log4j2介绍和特性实例(七)--代码中指定日志文件的名字
2016-01-31 20:18
471 查看
有的时候,可能会希望通过程序代码,动态指定日志文件的名字。
在下面的例子中,我使用JS脚本文件的名字来命名日志文件
在log4j2.xml配置文件中,文件名fileName= "${sys:logFileName}"
在下面的例子中,我使用JS脚本文件的名字来命名日志文件
/** * 日志名字根据JS文件名,动态指定 * * @param JSName 是JS脚本的名字 * @param configPath log4j2.xml的路径 * */ public void setLogName(String JSName, String configPath){ String userPath = System.getProperty("user.dir"); // System.out.println(userPath); System.setProperty("logFileName", userPath + "\\" + JSName + ".log");//logFileName在log4j2.xml中使用 System.out.println(System.getProperty("logFileName").toString()); LoggerContext ctx = (LoggerContext)LogManager.getContext(false); File filePath = new File(configPath); URI configURI = filePath.toURI(); System.out.println("configURI = " + configURI.toString());//configURI = file:/E:/workspace4J2EE/KMSTool/log4j2.xml ctx.setConfigLocation(configURI); // ctx.reconfigure();//如果log4j2.xml在默认路径(src目录)下的情况,就不用获取xml文件的路径了 }上面的代码是针对配置文件log4j2.xml不在配置文件默认路径src目录下情况;如果配置文件在src目录下的话,只需要简单的设置一下ctx.reconfigure()就可以完成日志文件名的动态指定。
在log4j2.xml配置文件中,文件名fileName= "${sys:logFileName}"
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error" monitorInterval="30"> <Properties> <Property name="log.path">.</Property> </Properties> <appenders> <RollingFile name="debugLog" fileName= "${sys:logFileName}" filePattern="${sys:logFileName}-%i.log"> <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %m%n" /> <SizeBasedTriggeringPolicy size="100MB" /> <!-- DefaultRolloverStrategy 中的参数max,可以限制 SizeBasedTriggeringPolicy中size超出后,只保留max个存档--> <DefaultRolloverStrategy max="20"/> </RollingFile> </appenders> <loggers> <root level="trace"> <appender-ref ref="debugLog" /> </root> </loggers> </configuration>下一篇将介绍log4j2暂时不支持的内容。
相关文章推荐
- 2.4.1Python控制流
- Effective C++ 24,25
- Java 字符类型
- 深入理解Java内存模型(四)——volatile
- 【编程基础】程序小白脸盲症之重载、重写、多态
- ZOJ-2855-Google Map【4th浙江省赛】
- 详细记录python的range()函数用法
- C++ 解析Json——jsoncpp
- java的成员变量和局部变量!
- 『Python』序列学习总结之三——字符串
- 学习Python语言---高级数据类型
- 数独解法 C++实现
- c++ bitset类的使用和简介
- Python 10.1 datetime
- C++全局变量
- 《集体智慧编程》学习笔记(一)
- C++ Builder2010窗体生命周期中的五种事件
- PHP中 的全局变量$_SERVER
- Lua消息处理集合
- Lua检查非空