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

在log4j2中打印intLevel

梁宪
2023-03-14

共有1个答案

巫马安怡
2023-03-14

听起来像是希望记录日志级别的整数值而不是名称,并且不希望使用patternlayoutlevel参数的标记特性。

一个可能的解决方案是创建一个自定义的查找,下面是一些示例代码:

package example;

import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.lookup.StrLookup;

@Plugin(name = "level", category = "Lookup")
public class LevelLookup implements StrLookup{
    /**
     * Lookup the value for the key.
     * @param key  the key to be looked up, may be null
     * @return The value for the key.
     */
    public String lookup(String key) {
        return null;
    }


    /**
     * Lookup the value for the key using the data in the LogEvent.
     * @param event The current LogEvent.
     * @param key  the key to be looked up, may be null
     * @return The value associated with the key.
     */
    public String lookup(LogEvent event, String key) {
        return String.valueOf(event.getLevel().intLevel());
    }
}

下面是使用新查找的示例配置-注意${level:}:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] ${level:} %logger{36} - %msg%n" />
        </Console>
    </Appenders>

    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console" />           
        </Root>
    </Loggers>
</Configuration>

下面是一些执行日志记录的示例代码:

package example;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class SomeClass {

    private static final Logger log = LogManager.getLogger();   

    public static void main(String[] args){
        log.debug("This is some debug!");
        log.info("Here's some info!");
        log.error("Some erorr happened!");
    }
}

最后是输出:

22:49:29.438 [main] 500 example.SomeClass - This is some debug!
22:49:29.440 [main] 400 example.SomeClass - Here's some info!
22:49:29.440 [main] 200 example.SomeClass - Some erorr happened!

希望这有帮助!

 类似资料:
  • 我正在使用具有以下依赖项的log4j2:: 我正在使用以下配置:: 然而,我在控制台上得到以下格式的日志 在滚动文件中,我得到以下模式,其中行号丢失:: 我已经疯了,因为似乎没有什么工作打印行号我也遵循官方的log4j2链接Log4j2迁移,但结果仍然与上述相同。如果有人有任何解决办法,请让我知道。

  • 我想打印事件严重性的句子大小写,在日志中,而不是默认的大写。我修改了log4j2 xml,如下所示, null null

  • 打印工作流程有时很复杂。首先了解所需的设置,然后再浏览到感兴趣的主题。 更多此类内容 设置打印文档 打印分色 印刷标记和出血 PostScript 打印 用色彩管理打印 打印渐变、网格和颜色混合 打印和存储透明图稿 叠印 陷印 打印预设

  • 我在标签打印机上打印时遇到了问题。下面的代码在一个上打印4个“标签”(附标签图片)。 下面的代码打印到兄弟QL-500标签打印机上。它打印到3.5"乘1.1"标签上。 如果有人能帮我更好地理解代码,那也太好了。 下面是它打印的内容:

  • 我们可以dsable日志打印一些自定义创建记录器吗? 我想禁用文件记录器控制台中的打印消息

  • 问题内容: 在Python 3.3中,打印时是否有任何方法可以使字符串下标中的文本成为一部分? 例如H 2(H然后是下标2) 问题答案: 如果您只关心数字,则可以使用和方法: 请注意,这在Python 2中不起作用-请参见Python 2 maketrans()函数与Unicode不兼容,以获取有关为何如此以及如何解决此问题的解释。