【问题标题】:Log4j2: How to write the log to a folder inside of WEB-INF?Log4j2:如何将日志写入 WEB-INF 内的文件夹?
【发布时间】:2017-12-09 15:45:26
【问题描述】:

我正在使用 Tomcat。我希望将一些 Log4j2 日志写入 Web 应用程序的 WEB-INF 文件夹中。例如:

<RollingRandomAccessFile name="MyLog" fileName="${????}/logs/MyLog.log">

我该怎么做?

【问题讨论】:

    标签: tomcat logging web-applications log4j2 web-inf


    【解决方案1】:

    这是一个坏主意,并且由于以下(不完整)原因不能保证有效:

    • 您的应用程序服务器甚至可能不会解压缩 WAR 文件,因此您没有要写入的文件系统:应用程序可以轻松地从 WAR 文件运行。
    • 如果您有一个实际的文件系统支持的应用程序:您的应用程序的下一次部署将擦除您的日志文件
    • 出于安全原因,不让 Web 应用程序能够覆盖自己是一个很好的论据 - 授予,您只能使单个日志目录可写,但恕我直言,这不是一个好策略(并且权限很容易更改为下一次部署)

    而是为您的应用服务器分配一个特定的日志目录并将其用于输出。在那里,您可以在众所周知的地方配置日志轮换等,而不是在可能遵循这种配置风格的各种 Web 应用程序中。

    【讨论】:

    • 是的,但您不知道用例。例如,有一个文件系统,这些日志是临时的,可能会被擦除。我真的需要这样做,你的论点虽然经过深思熟虑,但不适用于这种特殊情况。
    • 我还是不知道用例。您给出的任何论点都没有要求必须将日志文件写入 app 目录中,因此我支持将它们放在其他位置的论点。当日志确实是临时的,而不是依靠下一次部署来擦除它们,而是显式地记录它们。使用最佳实践也将有助于下一个维护者。
    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2019-01-10
    相关资源
    最近更新 更多