log4j写入windows共享

log4j写入windows共享,windows,log4j,Windows,Log4j,我有一个java应用程序在windows机器上运行 长话短说,我们对每台机器放置日志文件的位置有一个约定: \\%COMPUTERNAME%\Logs\<AppNameHere> 但我在运行应用程序时没有看到目录/文件(应用程序做的第一件事就是记录启动消息) 所以我猜测log4j/java无法处理特定于windows的UNC路径 还有谁遇到过这个问题并想办法解决吗?我查看了Log4j的源代码。它似乎使用java.io.File保存对指定文件名的引用 另外,java.io.File的

我有一个java应用程序在windows机器上运行

长话短说,我们对每台机器放置日志文件的位置有一个约定:

\\%COMPUTERNAME%\Logs\<AppNameHere>
但我在运行应用程序时没有看到目录/文件(应用程序做的第一件事就是记录启动消息)

所以我猜测log4j/java无法处理特定于windows的UNC路径


还有谁遇到过这个问题并想办法解决吗?

我查看了Log4j的源代码。它似乎使用
java.io.File
保存对指定文件名的引用

另外,
java.io.File
的Javadocs声明
File
的构造函数支持UNC路径(Log4J使用)

因此,从表面上看,没有理由认为您的配置不起作用;但是——这是需要注意的重要一点——Java在SMB上的文件I/O问题上有很长的历史(这正是您正在尝试做的)

我的忠告是:

  • 通过指定
    -Dlog4j.debug=true启动应用程序。系统属性将使Log4J提供大量调试信息,以帮助您跟踪问题
  • 尝试使用相同的配置,只是不要引用带有UNC前缀的文件,只需映射驱动器(我知道您正在Windows上运行)。如果映射驱动器可以正常工作,这意味着使用UNC前缀是问题的根源(尽管我对此表示怀疑)

  • 您需要为每个齿隙设置两个齿隙,如下配置所示

    
    log4j.appender.Log\u Arquivo.File=\\\\172.31.88.168\\server10\\soma\u 10\\logs\\soma\u 10.Log
    


    我希望这对你有帮助。

    谢谢,我马上就去试试!我有一个类似的问题,下面是对我有效的方法:如果您的共享路径类似于:“\\ServerName\shareFolder\…\”,请改为:///ServerName/shareFolder/…”
    log4j.appender.R.File = \\${machine.name}\Logs\MyVerySpecialApplicationName\log.log