在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,用户2日志进入/ mylogs /日志/应用/ app.user2.info.log?
我正在使用log4j 1.2.14,但如果需要可以升级。 Log4j也被其他我想不接触的源代码库使用。我的应用程序是一个独立的Java应用程序。
如果我将config中的文件名更改为/mylogs/logs/app/app.${env.USER}.info.log(假设我升级到log4j 2.3),它会在部署时进行替换以更改log4j.properties文件本身。我希望用户替换在运行时发生,因此多个用户可以使用相同的安装。
谢谢!
答案 0 :(得分:1)
在运行时,您可以创建一个新的FileAppender并将其添加到根记录器,即
FileAppender fileAppender = new FileAppender();
fileAppender.setFile("userxylog.log");
....
Logger.getRootLogger().addAppender(fileAppender)
....