我在Windows机器上运行了一个java应用程序。
长话短说,我们有一个约定,我们在每台机器上放置日志文件:
\\%COMPUTERNAME%\Logs\<AppNameHere>
所以我使用-Dmachine.name =“%COMPUTERNAME%”将我的Java应用程序配置为启动,然后在我的log4j.properties文件中指定
log4j.appender.R.File = \\${machine.name}\Logs\MyVerySpecialApplicationName\log.log
但是当我运行我的应用程序时,我没有看到该目录/文件出现(应用程序所做的第一件事就是记录启动消息)。
所以我的猜测是log4j / java无法处理特定于Windows的UNC路径。
其他人遇到这个问题并找到解决方法吗?
答案 0 :(得分:2)
我查看了Log4j的源代码。它似乎使用java.io.File
来保存对您指定的文件名的引用。
此外,java.io.File
的Javadoc声明File
(Log4J使用)的构造函数支持UNC路径。
所以,从表面上看,没有理由说你的配置不起作用; 但是 - 这是需要注意的重点 - Java在SMB上的文件I / O问题上有很长的历史(这正是你想要做的)。
我的建议:
-Dlog4j.debug=true
启动您的应用程序。系统属性将使Log4J吐出大量调试信息,以帮助您跟踪问题。让我们知道事情是如何发展的。祝好运。 艾萨克
答案 1 :(得分:1)
您需要为每个人提出两个反弹,如下面的配置
log4j.appender.Log_Arquivo.File=\\\\172.31.88.168\\server10\\soma_10\\logs\\soma_10.log
我希望这对你有所帮助。