当前位置: 首页 > 知识库问答 >
问题:

Log4j2-使用多个记录器的xml到属性配置

夏立果
2023-03-14
<Loggers>
    <!-- Apache Struts2 logger -->
    <Logger name="org.apache.struts2" level="warn" additivity="false">
        <AppenderRef ref="STDOUT"/>
        <AppenderRef ref="RollingFile"/>
    </Logger>
    <!-- Spring logger -->
    <Logger name="org.springframework" level="warn" additivity="false">
        <AppenderRef ref="STDOUT"/>
        <AppenderRef ref="RollingFile"/>
    </Logger>
    <!-- Root logger -->
    <Root level="info">
        <AppenderRef ref="STDOUT"/>
        <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>

上面是log4j2的一个片段。xml配置文件,我想将其转换为属性。

问题是当我在同一个文件(属性)中定义多个记录器时,只有根记录器工作,这意味着改变其他记录器的级别不会做任何事情。

在同一个属性配置文件中定义多个记录器的正确方法是什么?

编辑:

logger.rolling.name = org.apache.struts2
logger.rolling.level = warn

logger.rolling.name = org.springframework
logger.rolling.level = warn

rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile
rootLogger.appenderRef.rolling.fileName = ${filename}

这是我尝试过的属性配置,但不起作用。

共有2个答案

苗冯浩
2023-03-14

Will-您需要添加这样的类别。。

log4j.rootCategory=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=.....
log4j.appender.DB.driver=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
log4j.appender.DB.user=...
log4j.appender.DB.password=...
log4j.appender.DB.sql=INSERT INTO BATCH_LOG VALUES("%x","%d","%C","%p","%m")
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

log4j.category.org.apache.activemq=INFO
log4j.category.org.springframework.batch=INFO
log4j.category.org.springframework.transaction=INFO
荀学文
2023-03-14

试试下面的配置-

logger.rolling1.name = org.apache.struts2
logger.rolling1.level = warn
logger.rolling1.additivity = false
logger.rolling1.appenderRef.stdout.ref = STDOUT
logger.rolling1.appenderRef.rolling.ref = RollingFile

logger.rolling2.name = org.springframework
logger.rolling2.level = warn
logger.rolling2.additivity = false
logger.rolling2.appenderRef.stdout.ref = STDOUT
logger.rolling2.appenderRef.rolling.ref = RollingFile

rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile
 类似资料:
  • 由此我从NetBeans得到以下错误消息: 所有异常消息都写入控制台,包括用户日志的消息。所以我知道两个伐木工都在工作。记录器附加器写入文件OK。userLog记录器不会创建任何文件,它使用几乎相同的附加器。 看来我还没有正确地命名一些东西来允许log4j2找到记录器。我试过各种命名的组合来弄对它,但我搞不清问题出在哪里。 我必须在每个类的记录器初始化中包含类名吗? 编辑:我需要包含包名。我花了一

  • 根据Log4j 2手册: LoggerConfig(包括根LoggerConfig)可以配置属性,这些属性将添加到从ThreadContextMap复制的属性中。这些属性可以从应用程序、筛选器、布局等中引用,就像它们是线程上下文映射的一部分一样。 但是,我找不到怎么做。我尝试了以下方法: 使用此配置,ThreadContextMap将不会有任何“关注”键,并且状态记录器将输出: 尝试将属性属性属性

  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

  • 我想让一些记录器异步在log4j2.properties文件。在xml格式中,您可以添加为 我在log4j2中试过了。作为记录器的属性=com foo Bar 但这种语法似乎是错误的。 正确的配置方法是什么?

  • 我定义了多个记录器,如下所示(com.xyz和org.xyz)。Log4j2忽略了第一个记录器定义,只加载第二个。在示例中,org.xyz未加载。 在log4j2调试消息下方查找。 我的配置正确吗?