Windows 中需要非管理员权限的文件的 Log4j 属性
我使用 log4j 进行日志记录,并且有两个 log4j.properties
文件,一个用于记录到 stdout(用于开发),另一个用于记录到文件(生产)。
在这种情况下,用户将在没有管理员权限的Windows 7 x86上运行程序,所以我猜测日志操作无法完成,因为我的日志文件位于安装文件夹(C:\Program Files\. ..
)。
我想到的第一个解决方案是将日志文件放在用户文件夹中(C:\User\%Name%
)。我知道我可以通过以下方式以编程方式获取该文件夹:
System.getProperty("user.home")
但是如何在 Java .properties
文件(在本例中是 log4j.properties
)中获取该属性?
然后我考虑使用一个 templatelog4j.properties
,其中标记一个区域以替换用户文件夹路径,但我想避免这种情况。
I'm using log4j for my logging and I have two log4j.properties
files, one for logging to stdout (to develop) and another to log to a file (production).
In this case, the user will run the program on Windows 7 x86 without administrator rights, so I guess that the logging operation can't be done because my log file is in the installation folder (C:\Program Files\...
).
The first solution that I thought of was to have the log file in the user folder (C:\User\%Name%
). I know that I can get that folder programmatically with:
System.getProperty("user.home")
but how can I get that property in a Java .properties
file, in this case log4j.properties
?
Then I thought about having a templatelog4j.properties
with an area marked to replace with the user folder path, but I want to avoid that one.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不将日志记录位置默认为您知道可以访问的位置,并允许用户根据需要将其放置在其他位置?
Why don't you default the logging location to a place that you know will be accessible, and allow the user to put it somewhere else if they wish?
经过更多谷歌搜索后,我找到了答案:
您可以使用
${NAME} 使用
。 这是一个示例。.properties
文件中的每个 VM 属性(至少log4j.properties
)After some more googling, I found the answer:
You can use every VM property inside a
.properties
file (at leastlog4j.properties
) using${NAME}
. Here's an example.