我有一个 Web 应用程序,我想为每个用户使用不同的日志,这样我就可以获得用户在系统上执行的操作的“历史记录”。
这是我到目前为止所拥有的:
import java.io.File;
import java.io.IOException;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.Logger;
public class LogManager {
public Logger getLog(String username) throws IOException{
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new DailyRollingFileAppender(layout, "users"+File.pathSeparator+username+File.pathSeparator+username, "'.'yyyy-MM");
// configure the appender here, with file location, etc
appender.activateOptions();
Logger logger = Logger.getRootLogger();
logger.addAppender(appender);
return logger;
}
}
问题是,作为一个网络应用程序,是多线程的,所以据我所知我不能使用RootLogger
一直并根据我正在记录的用户更改附加程序。我想我应该创造不同的Logger
对于每个用户,但这是正确的吗?
尝试切换到logback(log4j 的后继者)。它带有一个筛选Appender它可用于根据给定的运行时属性(在您的情况下为“userid”)来分离(或筛选)日志记录。这文档包含基于用户 ID 分离日志的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)