log4j - 动态创建多个文件

时间:2012-02-27 13:59:37

标签: java filter log4j

想象一下,我正在创建一个管理公司员工的应用程序,并且从主应用程序日志开始,我想为每个员工维护一个日志文件。因此,每次创建新对象Employee时,都应创建一个新的日志文件,并且应该使用(例如)简单的字符串匹配来选择日志条目。

简单地说,emplyee 5的日志文件内容应该等于输出:

$ grep "EmployeeId=5" application.log

最简单的方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以动态配置log4j。您可以在此处将特定记录器名称与要将其输出到的文件相关联。以下是关于该主题的文章:http://robertmaldon.blogspot.com/2007/09/programmatically-configuring-log4j-and.html

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

答案 1 :(得分:0)

我不会为此使用log4j或任何调试日志框架。只需打开一个文件并写下你想要的输出。文件f =新文件(“outputdir /”+ employee.id)

答案 2 :(得分:0)

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

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

Log4j MDC

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