我的应用程序具有我创建的日志记录系统。但是我想用log4j2代替它。但是我遇到了在log4j2中配置日志目录的问题。是的,我知道可以登录到配置文件中所述的固定目录:
<RandomAccessFile name="FILE" fileName="l4j2/${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-6p %C{1}.%t:%L >>> %m%n"/>
</RandomAccessFile >
但是我想将数据记录在用户“我的文档”目录中,该目录可以在启动Java应用程序时特定。可能吗?
我知道了。
从修改log4j2.xml
<RandomAccessFile name="FILE" fileName="l4j2/${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
至:
<RandomAccessFile name="FILE" fileName="${sys:log4j.saveDirectory}/${date:yyyy-MM-dd_hh-mm-ss}.logd" append="true" immediateFlush="false">
添加到Java代码:
System.setProperty("log4j.saveDirectory", getMyDocuments());
您可以使用以下方法估算用户的“我的文档”:
String getMyDocuments()
{
String out = ".\\";
try
{
Process process = Runtime.getRuntime().exec("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v personal");
process.waitFor();
StringWriter sw = new StringWriter();
int c;
while ((c = process.getInputStream().read()) != -1)
{
sw.write(c);
}
String output = sw.toString().replaceAll("\t", " ");
String[] parsed = output.split("\\t|\\s{2,}");
}
catch (Exception e)
{
e.printStackTrace();
}
return out;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句