【问题标题】:Log4j 2 custom level on Jboss 6.4Jboss 6.4 上的 Log4j 2 自定义级别
【发布时间】:2016-04-27 18:11:41
【问题描述】:

我有一个带有 jee6 和 log4j 2 的网络应用程序。我想为我的 Batch 进程创建一个自定义日志,我设置了一个自定义级别来填充 Batch 的日志。

但是我什么都不能记录,在服务器启动时我可以创建日志文件 server.log 但是是空的,并且 error_batch.log 有所有日志:.info 和我的自定义级别,我没有服务器中的错误,我的情况下正确的配置是什么??

private static final Logger logger = LogManager.getLogger(test.class);

-

logger.info("Starting on the Server");
logger.log(Level.forName("ERROR_BATCH", 450), "Example Error in Batch");

-

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN">

    <CustomLevels>
        <CustomLevel name="ERROR_BATCH" intLevel="450" />
    </CustomLevels>

    <Appenders>

        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <RollingFile name="logBatch" fileName="C:\\Workarea\\Error\\error_batch.log"
                     filePattern="C:\\Workarea\\Error\\error_batch-%d{dd-MM-yyyy}-%i.log"
                     append="true">
            <PatternLayout>
                <Pattern>%d %p %c [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="1 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingFile>

        <RollingFile name="logServer" fileName="C:\\Workarea\\Error\\server.log"
                     filePattern="C:\\Workarea\\Error\\server-%d{dd-MM-yyyy}-%i.log"
                     append="true">
            <PatternLayout>
                <Pattern>%d %p %c [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="1 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingFile>

    </Appenders>

    <Loggers>
        <Root level="error">
            <AppenderRef ref="Console" />
            <AppenderRef ref="logServer" />
        </Root>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="logServer" />
        </Root>
        <Root level="debug">
            <AppenderRef ref="Console" />
            <AppenderRef ref="logServer" />
        </Root>
        <Root level="trace">
            <AppenderRef ref="logBatch" level="ERROR_BATCH" />
        </Root>
    </Loggers>

</Configuration>

【问题讨论】:

    标签: java jakarta-ee jboss log4j log4j2


    【解决方案1】:

    这似乎与 How to log in different file? log4j2 重复,而后者又与之前提出的问题重复。

    您的基本问题是您只能配置一次根记录器,而不是 4 次。我猜 level="error" 的那个是“获胜”,但我不太确定。

    至于如何获取特定日志文件的事件请参考你之前问的问题中给你的答案。

    【讨论】:

      【解决方案2】:
      logger.log(Level.forName("ERROR_BATCH", 450), "Example Error in Batch");
      

      <CustomLevels>
          <CustomLevel name="ERROR_BATCH" intLevel="450" />
      </CustomLevels>
      

      是重复的。您定义了两次自定义级别,第二次(在代码中)必须覆盖第一次(在配置文件中)。

      删除代码中的那个。它应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        相关资源
        最近更新 更多