I have a webapplication and I want to use a different log for every user, so I can have a "history" of what the user did on the system.
This is what I have so far:
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;
}
}
The problem is that, as a webapplication, is multithreaded, so AFAIK I can't use RootLogger
all the time and change the appenders depending on the user who I'm logging. I think I should create different Logger
for each user, but is that correct?