gpt4 book ai didi

java - 我怎样才能让 Log4j2 登录到我的日志文件,我已经尝试了我能想到的一切,这可能是 linux 中的配置问题吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:25 27 4
gpt4 key购买 nike

我的 log4j2.xml 与我为另一个类似服务器编写的完全相同 - 运行良好。唯一的区别是文件/服务器名称和路径。Log4j1 也工作得很好,只是 log4j2 导致了问题。我开始认为此时我可能错过了 linux 配置中的某些内容。我尝试过的事情:

  • 在项目根目录下包含log4j2.xml
  • 在我的项目的 main.resources 文件夹中包含 log4j2.xml
  • 运行 jar 时使用 -Dlog4j.configurationFile="PATH"(通过 systemd)
  • 已验证文件夹/日志文件归服务器用户和服务器组所有
  • 已验证服务器对文件/文件夹具有rw 权限
  • 验证服务器用户是正确组的成员

此外,当我在服务器上运行 systemctl status -l 时,结果输出显示了我希望在 firmwareserver.log 文件中看到的日志数据。
我的其他服务器使用项目中 main.resources 的 log4j2.xml 文件,没有任何问题。

编辑: 我应该补充一点,我正在 Windows 机器上的 eclipse 中开发它,当我在那里运行它时,日志文件按预期保存,即使使用 linux 路径它仍然有效。

编辑 2: 当我直接运行 jar 文件而不是作为 systemd 服务时,我发现了以下错误:

2016-03-11 14:06:39,601 ERROR Unable to locate appender RollingFile for logger

这是我的 Log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG" monitorInterval="30">
<Properties>
<Property name="windows-log-path">C:/log4j/</Property>
<Property name="linux-log-path">/var/log/wsfirmwareserver</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${linux-log-path}/firmwareserver.log"
filePattern="${linux-log-path}/$${date:yyyy-MM}/firmwareserver-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}{GMT+1} [%-5p] [%t] - %c{1}: %m%n</pattern>
</PatternLayout>
<SizeBasedTriggeringPolicy size="5MB" />
<DefaultRolloverStrategy max="30" />
</RollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] - %m%n" />
</Console>
<SMTP name="SMTPAppender"
smtpProtocol="smtps"
smtpPort="465"
subject="LOC SERVER:Error"
to="me@myjob.com, me@otheremail.com"
from="notifications@myjob.com"
smtpHost="smtp.gmail.com"
smtpUsername="notifications@myjob.com"
smtpPassword="thepassword"
bufferSize="512">

<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}{GMT+1} [%-5p] [%t] - %c{1}: %m%n</pattern>
</PatternLayout>
</SMTP>
</Appenders>
<Loggers>
<Logger name="root" level="info" additivity="false">
<appender-ref ref="RollingFile" level="info" />
</Logger>

<Root level="debug" additivity="false">
<AppenderRef ref="Console" level="debug"/>
<AppenderRef ref="RollingFile" level="debug"/>
<AppenderRef ref="SMTPAppender" level="error"/>
</Root>
</Loggers>
</Configuration>

有人有什么建议吗?理想情况下,我希望配置文件与服务器 jar 位于同一文件夹中,但此时我只想让它正确地记录到文件中。

最佳答案

log4j2.xml 文件本身有错误。我没有找到它,但是用另一台服务器的副本替换它解决了这个问题。

关于java - 我怎样才能让 Log4j2 登录到我的日志文件,我已经尝试了我能想到的一切,这可能是 linux 中的配置问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com