Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化Log4j appender_Java_Servlets_Log4j - Fatal编程技术网

Java 无法实例化Log4j appender

Java 无法实例化Log4j appender,java,servlets,log4j,Java,Servlets,Log4j,下面是关于Log4j登录web应用程序的教程 这是我的log4j.properties文件: #log to console log4j.rootLogger=INFO, , demoappender log4j.appender.demoappender=org.apache.log4j.ConsoleAppender log4j.appender.demoappender=System.out log4j.appender.demoappender.layout=org.apache.log

下面是关于Log4j登录web应用程序的教程

这是我的
log4j.properties
文件:

#log to console
log4j.rootLogger=INFO, , demoappender
log4j.appender.demoappender=org.apache.log4j.ConsoleAppender
log4j.appender.demoappender=System.out
log4j.appender.demoappender.layout=org.apache.log4j.PatternLayout
log4j.appender.demoappender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n
我正在使用init()方法实例化记录器:

这是我尝试记录一些示例消息的地方:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    logger.info("logging INFO message");
    logger.error("logging ERROR message");
    logger.warn("loggging WARNING message");
    logger.fatal("logging FATAL message");


    response.setContentType("text/html");
在Tomcat上运行servlet时,在控制台上出现以下错误:

log4j:ERROR Could not find value for key log4j.appender.
log4j:ERROR Could not instantiate appender named "".
log4j:ERROR Could not instantiate class [System.out].
java.lang.ClassNotFoundException: System.out
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:327)
at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:124)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:785)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getRootLogger(Logger.java:135)
at Log4jDemoServlet.init(Log4jDemoServlet.java:22)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1189)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1103)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:813)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
log4j:ERROR Could not instantiate appender named "demoappender".
log4j:WARN No appenders could be found for logger (root).
log4j:WARN Please initialize the log4j system properly.
log4j:错误无法找到注册表项log4j.appender的值。
log4j:错误无法实例化名为“”的appender。
log4j:错误无法实例化类[System.out]。
java.lang.ClassNotFoundException:System.out
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:190)
位于org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
在org.apache.log4j.helpers.OptionConverter.InstanceByCassName上(OptionConverter.java:327)
在org.apache.log4j.helpers.OptionConverter.InstanceByKey上(OptionConverter.java:124)
位于org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:785)
位于org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
位于org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
在org.apache.log4j.helpers.OptionConverter.selectAndConfigure上(OptionConverter.java:526)
登录org.apache.log4j.LogManager(LogManager.java:127)
位于org.apache.log4j.Logger.getRootLogger(Logger.java:135)
在Log4jDemoServlet.init(Log4jDemoServlet.java:22)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1189)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1103)
位于org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:813)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:724)
log4j:错误无法实例化名为“demoappender”的appender。
log4j:警告:找不到记录器(根)的追加器。
log4j:警告请正确初始化log4j系统。

我不知道如何解决这个问题,也不知道为什么会出现这些错误,因为我按照教程进行了一次测试。

您的文件中有两个错误

# Set root logger level to INFO and its only appender to demoappender
log4j.rootLogger=INFO, demoappender

# demoappender is set to be a ConsoleAppender.
log4j.appender.demoappender=org.apache.log4j.ConsoleAppender
# log4j.appender.demoappender=System.out                    <-- Remove this line

# demoappender uses PatternLayout.
log4j.appender.demoappender.layout=org.apache.log4j.PatternLayout
log4j.appender.demoappender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n
  • log4j中有一个空的appender。rootLogger=INFO,demoappender
    。此行的值被
    分割,因此有一个空元素。第一个元素是级别

  • appender类必须实现接口
    org.apache.log4j.appender
    ,而
    System.out
    不实现该接口

  • 您需要对文件进行若干更改

    # Set root logger level to INFO and its only appender to demoappender
    log4j.rootLogger=INFO, demoappender
    
    # demoappender is set to be a ConsoleAppender.
    log4j.appender.demoappender=org.apache.log4j.ConsoleAppender
    # log4j.appender.demoappender=System.out                    <-- Remove this line
    
    # demoappender uses PatternLayout.
    log4j.appender.demoappender.layout=org.apache.log4j.PatternLayout
    log4j.appender.demoappender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n
    
    #将根记录器级别设置为INFO,将其唯一的appender设置为demoappender
    log4j.rootLogger=INFO,demoappender
    #demoappender设置为ConsoleAppender。
    log4j.appender.demoappender=org.apache.log4j.ConsoleAppender
    
    #log4j.appender.demoappender=System.out谢谢,这对我很有用。你能解释一下我的错误是什么吗?但是
    logger.debug(“message”)没有显示给我。先生,我该怎么做?@Cataclysm尝试使用类似于
    log4j的东西。rootLogger=DEBUG,demoappender