gpt4 book ai didi

java - log4j根据登录linux的人创建动态文件名

转载 作者:行者123 更新时间:2023-12-01 11:16:46 25 4
gpt4 key购买 nike

在 Linux 中,用户名由 $USER 环境变量给出。

假设我有以下 log4j 配置

log4j.rootLogger=info, infoApp
# this should contain only INFO messages
log4j.appender.infoApp=org.apache.log4j.RollingFileAppender
log4j.appender.infoApp.File=/mylogs/logs/app/app.info.log
log4j.appender.infoApp.layout=org.apache.log4j.PatternLayout
log4j.appender.infoApp.layout.ConversionPattern=%d [%-5p] %t -- %m%n
log4j.appender.infoApp.MaxFileSize=10MB
log4j.appender.infoApp.MaxBackupIndex=6

如何动态添加在文件名中使用此文件的应用程序的用户名,以便 user1 日志进入/mylogs/logs/app/app.user1.info.log ,而 user2 日志进入/mylogs/日志/app/app.user2.info.log?

我正在使用 log4j 1.2.14,但如果需要可以升级。 Log4j 也被其他库使用,我不想触及其源代码。我的应用程序是一个独立的 Java 应用程序。

如果我将配置中的文件名更改为/mylogs/logs/app/app.${env.USER}.info.log (假设我升级到 log4j 2.3),它会在部署时进行替换以更改log4j.properties 文件本身。我希望用户替换在运行时发生,以便多个用户可以使用相同的安装。

谢谢!

最佳答案

在运行时,您可以创建一个新的 FileAppender 并将其添加到根记录器,即

  FileAppender fileAppender = new FileAppender();
fileAppender.setFile("userxylog.log");
....
Logger.getRootLogger().addAppender(fileAppender)
....

这在此处记录 https://logging.apache.org/log4j/1.2/apidocs/

关于java - log4j根据登录linux的人创建动态文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730240/

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