繁体   English   中英

使用与 slf4j 绑定的 log4j2 记录多条消息

[英]logging multiple messages with log4j2 binded with slf4j

我想实现类似的目标

Logger logger = LoggerFactory.getLogger(MyClassname.class);
logger.info("message1", "message2");

日志应该看起来像

message1 "some other info coming from log4j2 pattern" message2 

目前我使用模式布局来获取所需格式的日志,但无法找到有助于满足给定要求的方法。

编辑:添加一个小的 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
​
    <!-- Logging Properties -->
    <Properties>
        <Property name="LOG_PATTERN"> %sn | %d{yyyy-MM-dd HH:mm:ss}{GMT+0} | %d{yyyy-MM-dd HH:mm:ss} | %p | %m%n </Property>
<!--        <Property name="APP_LOG_ROOT">/Users/<User_name>/Documents/Logs</Property>-->
    </Properties>

    <Appenders>
        <RollingFile name="debugLog" fileName="app-debug.log"
                     filePattern="app-debug-%d{yyyy-MM-dd}-%i.log">
            <LevelRangeFilter minLevel="ERROR" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
​
    <Loggers>
​
        <Logger name="com.example" additivity="false" level="debug">
            <AppenderRef ref="debugLog" />
        </Logger>
    </Loggers>
​
</Configuration>

我们想给每个日志日志行一个 ID,而不是使用 %sn 我们想创建我们自己的 ID。 我正在记录到多个文件,%sn 使用在所有文件中共享的 static 计数器。

日志应该看起来像

line-0 | 2022-03-30 05:00:13 | 2022-03-30 10:30:13| DEBUG | A Sample Debug Message

更新:这似乎是 SLF4J MDC(映射诊断上下文)(或直接 Log4j ThreadContext)的情况。

Java 代码:

MDC.put("ownId", "line-0" /* computeYourOwnIdHere() */);
logger.debug("A Sample Debug Message");

配置模式:

<Property name="LOG_PATTERN"> %X{ownId} | %d{yyyy-MM-dd HH:mm:ss}{GMT+0} | %d{yyyy-MM-dd HH:mm:ss} | %p | %m%n </Property>

以前的回答:

logger.info("message1", "message2"); 只是一个 API 来构建格式化的日志消息。 由于"message1"不包含参数占位符{}"message2"字符串被简单地丢弃。 您要在日志消息中插入哪些具体的“来自 log4j2 模式的其他信息”? 您将其放在消息中间的要求非常不寻常,暂且不考虑日志分析工具如何处理此类日志的问题。 如果"some other info coming from log4j2 pattern" message1 message2就足够了,只需在末尾使用模式"... %m"并调用log.info("message1 {}","message2")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM