【发布时间】:2010-10-06 07:37:24
【问题描述】:
我有一个网络应用程序,我想为每个用户使用不同的日志,这样我就可以了解用户在系统上所做的事情的“历史记录”。
这是我目前所拥有的:
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;
}
}
问题在于,作为一个 web 应用程序,它是多线程的,所以我不能一直使用 RootLogger 并根据我正在登录的用户更改附加程序。我想我应该为每个用户创建不同的Logger,但这样对吗?
【问题讨论】:
-
您可以拥有多少用户?
-
在 1.000 和 10.000 之间
-
您知道您很可能不会被允许在您的 Web 服务器日志模块中同时打开 10.000 个文件?
-
我是。这个想法是打开、记录和关闭文件。但这就是为什么我在这里要求聆听不同的方法:)。
标签: java web-applications log4j