我正在开发一个可以在 OSX 和 Windows 上运行的应用程序。我希望将日志写入用户主目录。对于 OSX,它将位于 /Users//Library/Application Support/MyApp/log 目录下,而在 Windows 下,具体取决于 /Users//AppData/MyApp/log 目录下的版本。
我能做到这一点的最好方法是什么?我已经四处寻找解决方案,但没有找到任何有用的解决方案或我喜欢使用的解决方案。
期待您的意见。
编辑:
由于日志文件的位置取决于操作系统,我希望找到一个运行时解决方案,可能如下所示
if (System.getProperty("os.name").contains("mac"))
logFileLocation = System.getProperty("user.home") + "/Library/Application Support/MyApp/logs"
else
logFileLocation = System.getenv("APPDATA") + "/MyApp/logs"
Thanks
改变ConsoleAppender
to a FileAppender
。据我所知,写入请求将被重定向到 Windows 操作系统上的 appdata。不确定 MacO 是否如此。
URL mySource = MyAppMainClass.class.getProtectionDomain().getCodeSource().getLocation();
File rootFolder = new File(mySource.getPath());
System.setProperty("app.root", rootFolder.getAbsolutePath());
并像这样编辑 log4j 配置
log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender
log4j.appender.NotConsole.fileName=${app.root}/fileName.log
或对于用户主页:
// log4j 1.*
log4j.appender.NotConsole.fileName=${user.home}/fileName.log
// log4j 2.*
log4j.appender.NotConsole.fileName=${sys:user.home}/fileName.log
请注意,log4j 2 需要sys:
前缀 - 感谢@sgrubsmyon
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)