pak*_*ore 5 java log4j web-applications
我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,作为一个web应用程序,是多线程的,所以AFAIK我不能一直使用RootLogger并根据我正在登录的用户更改appender.我想我应该Logger为每个用户创建不同的,但这是正确的吗?
尝试切换到logback(log4j 的后继者)。它带有一个SiftingAppender,可用于根据给定的运行时属性(在您的情况下为“userid”)分离(或筛选)日志记录。该文档包含一个根据用户 ID 分离日志的示例。