【问题标题】:log4j2 properties file for a custom appender自定义附加程序的 log4j2 属性文件
【发布时间】:2019-07-27 11:03:14
【问题描述】:

我创建了一个自定义附加程序,但在我运行测试时它没有被调用。属性如下所示:

name=config
appenders=console, myCustomAppender

appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
#appender.console.layout.pattern =%d{HH:mm:ss} [%t] %c{1} [%-5level] - %msg%n
appender.console.layout.pattern=%d{dd-MM-yyyy HH:mm:ss} [%-5p] (%F:%L) - %m%n

appender.myCustomAppender = com.myCompany.logging.log4j.WindowsEventLogAppender
appender.myCustomAppender.name = WindowsEventLogAppender
appender.myCustomAppender.type = WindowsEventLogAppender

rootLogger.level=info
rootLogger.appenderRefs=stdout, myCustomAppender
rootLogger.appenderRef.stdout.ref=STDOUT

我的附加程序称为 WindowsEventLogAppender。知道我的属性文件有什么问题吗?我看到控制台测试消息,但没有来自我的附加程序的消息。现在我只是在我的自定义 appender 中做一个 System.out.println 来验证它是否被调用。

顺便说一句,我发现很多 XML 示例都用于带有自定义附加程序的 log4j2 配置,但没有找到用于使用属性文件进行配置的 XML 示例。

谢谢, -迈克

【问题讨论】:

  • 好吧,你为什么不选择加载xml呢?这是默认和推荐的方式。而且也很简单。不想听起来居高临下,只是一个意见
  • 我确实让它与 XML 格式一起工作,但我们有很多使用 .properties 配置文件的组件。我认为保留 .properties 将是前进的最佳途径,因为我不必将一堆 .properties 文件转换为 XML。另外,它似乎应该可以正常工作?否则为什么要提供 .properties 方法。

标签: java log4j2


【解决方案1】:

尝试添加 packages 属性。

喜欢:packages = com.myCompany

【讨论】:

    【解决方案2】:

    您没有包含包裹信息

    试试下面的配置。

    name=config
    appenders=console, myCustomAppender
    appender.console.type=Console
    appender.console.name=STDOUT
    appender.console.layout.type=PatternLayout
    #appender.console.layout.pattern =%d{HH:mm:ss} [%t] %c{1} [%-5level] - %msg%n
    appender.console.layout.pattern=%d{dd-MM-yyyy HH:mm:ss} [%-5p] (%F:%L) - %m%n
    appender.myCustomAppender = com.myCompany.logging.log4j.WindowsEventLogAppender
    appender.myCustomAppender.name = WindowsEventLogAppender
    appender.myCustomAppender.type = WindowsEventLogAppender
    rootLogger.level=info
    rootLogger.appenderRefs=stdout, myCustomAppender
    rootLogger.appenderRef.stdout.ref=STDOUT
    rootLogger.com.mycompany.example=INFO,STDOUT
    

    【讨论】:

      【解决方案3】:

      我在这里可能会很晚,但我认为我的回答可以帮助其他人寻找答案。如果这是正确的,请接受这个作为答案!

      如果您创建了一个具有如下注释的自定义附加程序:

      @Plugin(name = "MyCustomAppender", category = "Core", 
      elementType = "appender", printObject = true)
      public final class MyCustomAppenderImpl extends AbstractAppender {
        // other code for the plugin....
      }
      

      关于 Configuring Appenders 的 log4j2 手册指出:

      “使用特定的 appender 插件名称或 appender 元素和包含 appender 插件名称的 type 属性配置 appender”

      意思是appender的type应该是Appender插件的Name属性值。

      在上述情况下是 MyCustomAppender (appender.identifierName.type=MyCustomAppender)

      因此,要使其正常工作的属性文件配置应该是:

      (注意:我添加了一个 stdout(console) appender 只是为了显示 使用 OOTB 附加程序的相关性/相似性,以及 2 个示例 RootLogger 和自定义记录器的用法)

      # this packages attribute is important, please put comma seperated package(s) to the 
      # plugin(s) you have created
      packages = com.package.to.your.plugin
      
      # Example: Declare and Define OOTB Console appender, which sends log events to stdout
      appender.console.name = stdout
      appender.console.type = Console
      
      # Declare and define the custom appender like this
      # Note that the "abc" in "appender.abc.type" can be anything
      # and the value for "appender.abc.type" should be the same as 
      # "Name" attribute value given in custom appender plugin which is "MyCustomAppender"
      appender.abc.name=arbitrary_name
      appender.abc.type=MyCustomAppender
      
      rootLogger.appenderRef.stdout.ref = stdout
      rootLogger.appenderRef.abc.ref = arbitrary_name    
      
      logger.loggeridentifier.name = com.test.SomeClass
      logger.loggeridentifier.appenderRef.stdout.ref = stdout
      logger.loggeridentifier.appenderRef.abc.ref = arbitrary_name
      
      # Also note that the value of appenderRef should be the same name given to your 
      # appender in properties file, which in this case is "arbitrary_name" (as given above)
      

      【讨论】:

        猜你喜欢
        • 2020-05-20
        • 2017-01-06
        • 2023-03-30
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多