java - Jboss 6.4 上的 Log4j 2 自定义级别

标签 java jakarta-ee jboss log4j log4j2

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

但我无法记录任何内容,在服务器启动时我可以创建日志文件 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>

最佳答案

这看起来是 How to log in different file? log4j2 的重复项,这又是之前提出的问题的重复。

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

至于如何将事件获取到特定日志文件,请参阅您之前提出的问题中给您的答案。

关于java - Jboss 6.4 上的 Log4j 2 自定义级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36897723/

相关文章:

java - 如何正确使用 ActivityMapper/ActivityManager 来定位主页布局上显示的 View ?

java - 多态性赋值语句

java - 我怎样才能 "delimit"来自给定字符串的整数?

java - Tomcat 7 支持 MDB 监听器吗?

apache - 我需要安装 Tomcat 吗?我已经安装了 JBoss 用于与 Apache 进行负载平衡

java - Java 代码可以判断它是否在应用服务器中吗?

java - 返回错误 "Test class should have exactly one public zero-argument constructor"

java - Websphere 负载均衡器驻留在网络服务器中?

java - REST Web 应用程序中的 Spring 3 MVC 示例在哪里下载?

jboss 服务器的 Java 文档?