我有一个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;
}
}
问题是,作为Web应用程序,它是多线程的,所以AFAIK我不能一直使用RootLogger
并根据我要登录的用户来更改附加程序。我认为我应该Logger
为每个用户创建不同的内容,但这是正确的吗?
尝试切换到logback(log4j的后继者)。它带有一个SiftingAppender,可用于根据给定的运行时属性(在您的情况下为“
userid”)分隔(或筛选)日志记录。该文档包含一个示例,用于根据用户ID分隔日志。
我正在使用log4j2记录应用程序的事件。然而,我被以下问题所困扰。 当前,所有日志记录消息都被写入到两个不同的附加程序中。一个具有RollingFile类型,而另一个具有Console类型。 编辑: 我看到很多问题,要求只将某个级别的消息写入文件,而将不同级别的消息写入不同文件。在我的情况下,我需要将具有一定级别的更高的消息写入到不同的文件中。例如,在我提供的情况下,带有级别错误或致命的消息将同
问题内容: 我正在使用log4j登录我的应用程序。我正在尝试在不同文件中使用不同级别的日志,但是出了点问题。对于解决此问题的任何帮助,我们将不胜感激。 问题答案: log4j附加程序的标准行为是,它们以其阈值级别 或更高 的阈值记录所有消息,即具有阈值INFO的附加器将记录INFO,WARN,ERROR和FATAL消息,但不记录DEBUG。如果你想记录 只有 INFO信息,但不会发出警告及以上,然
问题内容: 我想在我的Java项目中使用Log4j,我应该在配置文件中提供该配置,该配置文件每天晚上12:00将生成一个新文件,并且文件名应类似于 -output- log-of-MyProjectName-HostName-2013-Dec-10。 txt 名称)。我的配置文件就是这样- 它每天都在创建新文件,但在文件名后附加日期。请帮我。提前致谢。 问题答案: 我认为您想要DailyRolli
由于log4j的官方文档是一个断开的链接,而且入门指南对我没有帮助,所以我想知道如何使用文件而不是文件为同一个记录器使用两个具有不同日志级别的追加器。 例如,像这样:
问题内容: 有没有一种方法可以配置log4j,以便将不同级别的日志记录输出到不同的附加程序? 我正在尝试设置多个日志文件。主日志文件将捕获所有类的所有INFO及以上消息。(在开发中,它将捕获所有DEBUG和以上消息,以及特定类的TRACE。) 然后,我想要一个单独的日志文件。该日志文件将捕获特定类子集的所有DEBUG消息,而忽略其他任何类的所有消息。 有没有办法得到我想要的? 问题答案: 这应该使
问题内容: 有没有办法为特定的浏览器加载不同的CSS文件? 像(伪代码差): 问题答案: 您想要的理想解决方案不存在: 不幸的是,如果您尝试在HTML本身上进行操作,则不存在跨浏览器解决方案。但是,它将适用于大多数版本的IE。像这样: 所以最好的解决方案是: 这样的Javascript解决方案怎么样:浏览器检测。阅读有关此类的内容以更好地弄清该文件的基本作用,就是这样的概念: 显然,它不仅可以检测