【问题标题】:org.apache.logging.log4j.core.config.ConfigurationException: No name attribute provided for Appender layoutorg.apache.logging.log4j.core.config.ConfigurationException:没有为 Appender 布局提供名称属性
【发布时间】:2021-07-07 21:45:56
【问题描述】:

我正在使用 log4j 登录到 LogOutput.log。我正在低于错误。谁能解释一下逻辑。我是日志记录新手

'Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.apache.logging.log4j.core.config.ConfigurationException: No name attribute provided for Appender layout
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.createAppender(PropertiesConfigurationBuilder.java:212)
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.build(PropertiesConfigurationBuilder.java:158)
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:56)
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:35)
at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:532)
at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:456)
at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:318)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:687)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:708)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138)
at org.apache.logging.log4j.jcl.LogAdapter.getContext(LogAdapter.java:39)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
at org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:40)
at org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:55)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
at userinterface.PizzaShoppie.<clinit>(PizzaShoppie.java:17)'

这是我的属性文件

name=LoggerConfigFile

rootlogger.level=DEBUG
rootlogger.appenderRef.file.ref=LoggerAppender

appender.file.name=LoggerAppender
appender.file.type=FILE
appender.file.fileName=log/LogOutput.log

appender.layout.type=PatternLayout
appender.layout.pattern=%d{dd-mmm-yyyy} %level -%m%n

          

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    TL;DR:将appender.layout 替换为appender.file.layout

    Log4j 2 配置文件的目的是构建一个带有子组件树的Configuration 对象。每当您有像 "name" 这样的JavaBean property 时,您都可以使用:

    name=My configuration name
    

    对于像 "appenders" 这样返回集合的属性,您可以使用以下语法:

    appender.<unique identifier>.type=<plugin's name>
    

    向集合中添加一个元素。 FileAppender 的插件名称是 "File",因此你可以写(你使用 "file" 作为标识符,但它可以是任何东西,例如 " 1"):

    appender.1.type=File
    

    要实例化它,然后您需要通过在属性名称前添加前缀 appender.1. 来配置 FileAppender 的所有 JavaBean 属性:

    appender.1.name=LoggerAppender
    appender.1.fileName=log/LogOutput.log
    ...
    

    同样的规则也适用于 appender 的嵌套组件:

    appender.1.layout.type=PatternLayout
    

    以此类推。

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 2013-04-08
      • 2019-08-15
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      相关资源
      最近更新 更多