[英]log4j ConsoleAppender printing to console twice even after setting Additivity to false
我有 log4j 附加程序,在 intellIj 中运行程序时将输出打印到控制台一次
但是通过executable.jar运行程序时两次。
写入日志文件的实际日志只出现一次,这是正确的。
我在这个代码块中以编程方式定义了我的记录器/附加器
一切都完成后,我打电话给
rootLogger.setAdditivity(false);
但由于某种原因,当我作为 a.jar 运行时,我的课程仍然是 output 两次到命令行控制台。 我通过在顶部定义一个日志变量来调用每个 class 中的记录器,如下所示:
public class SomeClass {
static Logger log = Logger.getLogger(SomeClass .class);
并且此日志变量在“SomeClass”class 中随处使用。
我已经尝试将所有 package 记录器的可加性设置为 false 以及在我设置它们的级别之前和之后......
Logger.getLogger("com.company").setAdditivity(false);
Logger.getLogger("com.company.project.database.Admin").setAdditivity(false);
...
但是当我以这种方式运行代码时,它抱怨它找不到 class 的附加程序,我正在定义所有 log4j 内容,并且没有任何内容写入输出/日志。
I think you are on the right track with additivity, however additivity is a property of a child, telling log4j not to use the parents: https://logging.apache.org/log4net/release/sdk/html/P_log4net_Repository_Hierarchy_Logger_Additivity.htm You已将最终父记录器的可加性设置为 false ,因为 root 不会是任何东西的孩子,所以它永远不会做任何事情。
尝试将每个 package 记录器的可加性设置为 false,希望这能解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.