如何以独立于平台的方式为Java应用程序选择日志文件的位置?

时间:2010-07-18 11:42:17

标签: java logging cross-platform

我正在编写一个java应用程序。目前,这会在.jar文件所在的同一目录中生成一个名为“trace.txt”的文件。这有时会导致文件权限问题,例如写入C:\ Program Files \ Foo \ trace.txt。

经过对SO的一些研究后,似乎普遍意见是为给定用户登录Application Data \ Foo \。这与其他操作系统的位置不同。

在这种情况下,最佳做法是什么?我正在使用java.util.logging。

3 个答案:

答案 0 :(得分:3)

您总是可以使用USER_HOME,在Linux或

中用〜标识

System.getProperty( “的user.home”);在java。

您会看到很多应用都有自己的.myappname文件夹,并将配置文件和日志放在那里。

这将映射到linux中的/home/user/.myapp或Windows中的C:/ Documents and settings / user / .myapp,并且应始终可写。

答案 1 :(得分:1)

如果这是一个“真实”的日志或跟踪文件,我会将其写入您可以通过java.io.tmpdir系统属性获取的默认临时文件路径

答案 2 :(得分:0)

如果您的java程序需要“安装”(可能只是设置了一些配置文件,将二进制文件移动到某个地方等),那么在安装过程中处理权限(在任何平台上)是完全没问题的。平台特定的东西,用于任何日志文件,配置,缓存用户设置等。安装通常意味着用户必须以超级用户权限运行安装脚本/程序。所以,你可以这样做。

通常,如果您的应用程序存储用户特定数据,您可以将其存储到/ home //。例如在Linux中就像系统和用户\ ttchong \ AppData一样在Window 7中(我在Window中不是很熟悉,如果我错了,请纠正我)。而且您的代码还需要处理用户路径,以允许多个用户对您的程序进行不同的设置。

否则,如果它是你不介意一起转储的日志文件之类的程序信息,我仍然更喜欢你现在这样做的方式,将它存储在jar文件的同一目录中,或者在日志文件夹中稍微好一点使用“安装”技巧在同一目录中。