Java Log4j:具有专业化的多个类别
我对log4j的分类有一些疑问 我有三类Java Log4j:具有专业化的多个类别,java,logging,log4j,Java,Logging,Log4j,我对log4j的分类有一些疑问 我有三类 程序 Program.BUILD Program.QUERY 当我定义以下log4j.properties时: log4j.logger.program=调试、标准输出、文件 log4j.logger.program.BUILD=调试,文件 在Java中,我称之为: Logger logger = Logger.getLogger("program.BUILD"); 假设标准输出和文件分别是控制台和文件的附加程序 我的问题是,当我指定这两个类别时,
程序
Program.BUILD
Program.QUERY
Logger logger = Logger.getLogger("program.BUILD");
假设标准输出和文件分别是控制台和文件的附加程序
我的问题是,当我指定这两个类别时,如图所示,`program.BUILD日志被写入控制台和文件。但他只是为文件附加器指定的。然后log4j将其作为继承
我想指定三个类别,但当指定时,他捕获了程序。只构建该类别中指定的内容,而不获取通用类别(程序)。
但如果未指定,则类别program.QUERY
和program.BUILD
将拾取程序类别,因为它将表示未指定的两个类别
我该怎么做呢?是的,Log4j有一个继承系统。您可以使用“additivity=false”标志禁用它(即,不要让日志消息冒泡到父类别)
给定记录器的每个已启用日志记录请求都将转发给
该记录器中的所有追加器以及中较高的追加器
等级制度。换句话说,追加器是从附加继承的
记录器层次结构。例如,如果将控制台附加程序添加到
根记录器,则所有已启用的日志记录请求将至少打印
在控制台上。如果在记录器中添加了文件追加器,
比方说C,然后为C启用日志记录请求,并打印C的子项
在文件和控制台上。可以覆盖此默认值
行为,使追加器累积不再是通过
将可加性标志设置为false
(请参阅)@Croisier在何处添加此标志“additivity=false”?在logger对象中,使用logger.setAdditivity命令program.BUILD(false)?如果我不设置program.BUILD,它仍将从程序继承?如下(假设您使用基于.properties文件的配置):log4j.additivity.program.BUILD=false