日期:2014-05-17  浏览次数:20785 次

log4j——根据不同的用户生成不同的日志

# 这是log4j配置文件
# 配置根日志
log4j.rootLogger=INFO,FILE1,FILE2,FILE3
# 配置输出源所对应的辅助类:log4j.appender.输出源名称=类名,如果输出到文件就写FileAppender
log4j.appender.FILE1=org.apache.log4j.FileAppender
# 指定文件名
log4j.appender.FILE1.file=${catalina.home}/logs/file1.log
# 指定布局方式(消息放入文件之后,怎样布局)
log4j.appender.FILE1.layout=org.apache.log4j.SimpleLayout

log4j.appender.FILE2=org.apache.log4j.FileAppender
log4j.appender.FILE2.file=${catalina.home}/logs/file2.html
log4j.appender.FILE2.layout=org.apache.log4j.HTMLLayout

log4j.appender.FILE3=org.apache.log4j.FileAppender
log4j.appender.FILE3.file=${catalina.home}/logs/file3.log
log4j.appender.FILE3.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE3.layout.conversionPattern=------%n%p%n%m%n%d%n%l%n------%n

上面的代码虽然是生成了三个文件,但是里面内容是一样的

现在需要的是用log4j生成不同的日志文件
比如有一个用户User1登录,就生成User1.log
另一个用户登录,就生成User2.log
log4j

------解决方案--------------------
首先你的这个法师当然不是不可以,缺点你也得注意。

用户量是不是会很多,比如网站活动用户可能只有2000,但是注册用户有200000.每用户一个文件对于文件系统是个灾难。

为了解决上述问题,你又要考虑日志文件的存放问题,比如根据用户ID每1000个用户一个目录等。

其实不知道你最终这样分开的原因是什么,我的建议是你不如延用平时的方法记录日志,但是在记录日志的时候加上用户信息,比如用户ID等。

事后不管是利用代码还是管理员直接在命令下操作都可以方便的提取出该用户的日志信息。

------解决方案--------------------
你可以针对每个用户定义log4j的property文件,然后在你的代码里动态的切换property文件。
如果登录的用户是a,那么
PropertyConfigurator.configure("C:/log4j-a.properties");
注意这是log4j 1.2的API,log4j 2的话,你可以到这里去找找API:
http://logging.apache.org/log4j/2.0/log4j-api/apidocs/overview-summary.html