有的时候,可能会希望通过程序代码,动态指定日志文件的名字。
在下面的例子中,我使用JS脚本文件的名字来命名日志文件
/**
* 日志名字根据JS文件名,动态指定
*
* @param JSName 是JS脚本的名字
* @param configPath 的路径
*
*/
public void setLogName(String JSName, String configPath){
String userPath = ("");
// (userPath);
("logFileName", userPath + "\\" + JSName + ".log");//logFileName在中使用
(("logFileName").toString());
LoggerContext ctx = (LoggerContext)(false);
File filePath = new File(configPath);
URI configURI = ();
("configURI = " + ());//configURI = file:/E:/workspace4J2EE/KMSTool/
(configURI);
// ();//如果在默认路径(src目录)下的情况,就不用获取xml文件的路径了
}
上面的代码是针对配置文件不在配置文件默认路径src目录下情况;如果配置文件在src目录下的话,只需要简单的设置一下()就可以完成日志文件名的动态指定。
在配置文件中,文件名fileName= "${sys:logFileName}"
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error" monitorInterval="30">
<Properties>
<Property name="">.</Property>
</Properties>
<appenders>
<RollingFile name="debugLog" fileName= "${sys:logFileName}"
filePattern="${sys:logFileName}-%">
<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暂时不支持的内容。