Java log4j-动态创建多个文件

Java log4j-动态创建多个文件,java,filter,log4j,Java,Filter,Log4j,假设我正在创建一个应用程序来管理一家公司的员工,从主应用程序日志中可以看出,我希望为与每个员工相关的操作维护一个日志文件。因此,每次我创建一个新的对象Employee时,都应该创建一个新的日志文件,并且应该使用(例如)简单的字符串匹配来提取日志条目 简言之,Emplye 5的日志文件内容应等同于以下内容的输出: $ grep "EmployeeId=5" application.log 做这件事最简单的方法是什么?我不会为此使用log4j或任何调试日志框架。只需打开一个文件并将输出写入其中。F

假设我正在创建一个应用程序来管理一家公司的员工,从主应用程序日志中可以看出,我希望为与每个员工相关的操作维护一个日志文件。因此,每次我创建一个新的对象Employee时,都应该创建一个新的日志文件,并且应该使用(例如)简单的字符串匹配来提取日志条目

简言之,Emplye 5的日志文件内容应等同于以下内容的输出:

$ grep "EmployeeId=5" application.log

做这件事最简单的方法是什么?

我不会为此使用log4j或任何调试日志框架。只需打开一个文件并将输出写入其中。File f=new File(“outputdir/”+employee.id)

Log4J不允许动态创建“未定义”的日志文件。所有日志文件都需要预定义(在log4j.xml或属性文件中)

您可以使用MDC或NDC上下文进行调查。这允许您将上下文与日志关联,这在某些情况下可能很有用:


如果使用MDC上下文还不够,我只能说,我认为您必须自己实现一个日志编写器。(注意并发性和性能。)

您可以动态配置log4j。这是将特定记录器名称与要输出到的文件相关联的地方。以下是一篇关于这一主题的文章:

然后,您还必须为每个员工创建一个记录器。您可以将这些记录器保存在hashmap中,以便在运行时动态访问它们。只需使用Logger.getLogger(“Employee”+x)来创建记录器