Log4j 意外的额外日志
Log4j Unexpected Extra Logs
我的日志输出充满了我不应该看到的意外额外信息。我刚刚将 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 库中获取日志输出?
我不明白怎么做,我想禁用该行为以便我的日志保持干净。如果我在这里禁用 'console',我最终将看不到其他预期的输出。
#log4j.rootCategory=info,console
log4j.rootCategory=info
您应该发现这些日志是从哪些包生成的,因此您可以在 conversionPattern 中添加“%c{10}”,以在日志消息之前打印包。
然后您可以禁用特定包的日志或更改日志级别,例如
log4j.logger.com.foo.bar=ERROR
我的日志输出充满了我不应该看到的意外额外信息。我刚刚将 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 库中获取日志输出?
我不明白怎么做,我想禁用该行为以便我的日志保持干净。如果我在这里禁用 'console',我最终将看不到其他预期的输出。
#log4j.rootCategory=info,console
log4j.rootCategory=info
您应该发现这些日志是从哪些包生成的,因此您可以在 conversionPattern 中添加“%c{10}”,以在日志消息之前打印包。 然后您可以禁用特定包的日志或更改日志级别,例如
log4j.logger.com.foo.bar=ERROR