【问题标题】:Log4j Unexpected Extra LogsLog4j 意外的额外日志
【发布时间】:2021-04-10 09:41:35
【问题描述】:

我的日志输出充满了我不应该看到的 UNEXPECTED EXTRA 信息。我刚刚将 Log4j 添加到我公司的一个 Java 项目中,并且正在发生这种情况。

文件:log4j.properties

log4j.rootCategory=info,console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.immediateFlush=true
log4j.appender.console.encoding=UTF-8
#log4j.appender.console.threshold=info

log4j.appender.console.layout=org.apache.log4j.PatternLayout
# log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n

文件:Main.java


import java.io.File;
import java.util.Properties;

import org.apache.directory.api.ldap.model.entry.Entry;
import org.apache.directory.api.ldap.model.exception.LdapException;
import org.apache.directory.api.ldap.model.message.SearchRequest;
import org.apache.directory.api.ldap.model.message.SearchResultDone;
import org.apache.directory.api.ldap.model.message.SearchResultEntry;
import org.apache.directory.api.ldap.model.message.SearchResultReference;
import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.directory.api.ldap.model.schema.*;
import org.apache.directory.api.ldap.model.schema.registries.AttributeTypeRegistry;
import org.apache.directory.server.core.DefaultDirectoryService;
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.InstanceLayout;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
import org.apache.directory.server.core.api.interceptor.context.*;
import org.apache.directory.server.core.api.schema.SchemaPartition;
import org.apache.directory.server.core.authn.AuthenticationInterceptor;
import org.apache.directory.server.core.authn.Authenticator;
import org.apache.directory.server.core.shared.DefaultDnFactory;
import org.apache.directory.server.ldap.LdapServer;
import org.apache.directory.server.ldap.LdapSession;
import org.apache.directory.server.ldap.handlers.extended.StartTlsHandler;
import org.apache.directory.server.ldap.handlers.LdapRequestHandler;
import org.apache.directory.server.ldap.handlers.LdapResponseHandler;
import org.apache.directory.server.ldap.handlers.request.SearchRequestHandler;
import org.apache.directory.server.protocol.shared.transport.TcpTransport;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Main {
        public final static Logger logger = Logger.getLogger(Main.class);

    public static void main(String[] args) throws Exception {

        File log4jPropertiesFile = new File("log4j.properties");
            if (log4jPropertiesFile.canRead()) {
                    PropertyConfigurator.configure(log4jPropertiesFile.getAbsolutePath());
                } else {
                    System.out.println("ERROR: Can't read log4j properties file.");
                    Properties log4jProps = new Properties();
                    log4jProps.put("log4j.rootLogger", "OFF");
                    PropertyConfigurator.configure(log4jProps);
                }
                Main.logger.info("Logging started");

        DirectoryService directoryService = new DefaultDirectoryService(); // THIS LINE IS THE START OF THE PROBLEM
        Main.logger.info("Starting program...")

当这行执行时:

DirectoryService directoryService = new DefaultDirectoryService();

我看到了大量的输出。类似于以下内容:


2021-04-09T13:26:04.658-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.18060.0.0.1
2021-04-09T13:26:04.659-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.7
2021-04-09T13:26:04.659-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.2
2021-04-09T13:26:04.659-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.18
2021-04-09T13:26:04.660-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.319
2021-04-09T13:26:04.660-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.3
2021-04-09T13:26:04.660-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.10.1
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.18060.0.0.1
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.7
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.2
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.18
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.319
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.3
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.10.1
2021-04-09T13:26:04.661-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.42.2.27.8.5.1
2021-04-09T13:26:04.662-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.9
2021-04-09T13:26:04.662-0700 INFO Registered pre-bundled control factory: 2.16.840.1.113730.3.4.10
2021-04-09T13:26:04.662-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.9.1.3
2021-04-09T13:26:04.663-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.9.1.4
2021-04-09T13:26:04.663-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.9.1.1
2021-04-09T13:26:04.663-0700 INFO Registered pre-bundled control factory: 1.3.6.1.4.1.4203.1.9.1.2
2021-04-09T13:26:04.663-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.473
2021-04-09T13:26:04.664-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.474
2021-04-09T13:26:04.664-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.841
2021-04-09T13:26:04.665-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.417
2021-04-09T13:26:04.665-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.1413
2021-04-09T13:26:04.666-0700 INFO Registered pre-bundled control factory: 1.2.840.113556.1.4.528
2021-04-09T13:26:04.667-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.1.8
2021-04-09T13:26:04.668-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.18060.0.1.8
2021-04-09T13:26:04.669-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.18060.0.1.3
2021-04-09T13:26:04.669-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.18060.0.1.6
2021-04-09T13:26:04.670-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.18060.0.1.5
2021-04-09T13:26:04.671-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.4203.1.11.1
2021-04-09T13:26:04.671-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.4203.1.11.3
2021-04-09T13:26:04.672-0700 INFO Registered pre-bundled extended operation factory: 1.3.6.1.4.1.1466.20037
2021-04-09T13:26:04.812-0700 INFO No version information : assuming version: 1

这些在我的日志中都没有。尽我所能告诉我,我以某种方式通过 DirectoryService 对象从一些 Apache 库中获取日志输出?

我不明白怎么做,我想禁用该行为,以便我的日志保持干净。如果我在这里禁用“控制台”,我最终不会看到其他预期的输出。

#log4j.rootCategory=info,console
log4j.rootCategory=info 

【问题讨论】:

    标签: java logging ldap log4j


    【解决方案1】:

    您应该发现这些日志是从哪些包生成的,因此您可以在转换模式中添加“%c{10}”,以便在日志消息之前打印这些包。 然后您可以禁用特定包的日志或更改日志级别,例如

    log4j.logger.com.foo.bar=ERROR
    

    【讨论】:

    • 非常感谢。你的建议奏效了,现在我的项目可以配置了。虽然我发现调用 shell 脚本正在传递 extra_args="-Djavax.net.debug=all -Dlog4j.logger.org.apache.directory.server=INFO" 这导致额外的意外输出!
    猜你喜欢
    • 2010-10-09
    • 2021-10-06
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多