我正在开发一个将在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"
Run Code Online (Sandbox Code Playgroud)
谢谢
Obs*_*ver 19
更改ConsoleAppender的FileAppender.据我所知,写请求将被重定向到Windows操作系统上的appdata.关于MacOs不确定.
URL mySource = MyAppMainClass.class.getProtectionDomain().getCodeSource().getLocation();
File rootFolder = new File(mySource.getPath());
System.setProperty("app.root", rootFolder.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
并像这样编辑log4j配置
log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender
log4j.appender.NotConsole.fileName=${app.root}/fileName.log
Run Code Online (Sandbox Code Playgroud)
或者用户家:
log4j.appender.NotConsole.fileName=${user.home}/fileName.log
Run Code Online (Sandbox Code Playgroud)