当前位置: 首页 > 面试题库 >

log4j 2向控制台附加程序添加多种颜色

伯晨
2023-03-14
问题内容

嗨,我刚刚下载并配置了log4j-2。我一直坚持将颜色代码应用于SlowConsole控制台附加程序。我的控制台附加程序如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SlowConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
        </Console>
        <File name="File" fileName="C:\log\out.txt">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />
        </File>
    </Appenders>
    <Loggers>
        <logger name="org.abc.ea.web" level="ALL" additivity="false">
            <!--Log4j for the WEB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <logger name="org.abc.ea.ejb" level="ALL" additivity="false">
            <!--Log4j for the EJB MODULE -->
            <appender-ref ref="SlowConsole"/>
        </logger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File" />
        </Root>
    </Loggers>
</Configuration>

我有两个问题,

  1. 我是log4j的新手,这是编写xml配置文件的正确方法吗?

  2. 如何在每个日志级别添加两个颜色代码?

例如:DEBUG = green->将输出浅绿色字体,但是我需要它是dimbold


问题答案:

我想我找到了解决方案。我下载了log4j2-core-
sources.jar并跟踪了源。您可以如下编写:

<Console name="SlowConsole" target="SYSTEM_OUT">
     <PatternLayout disableAnsi="false"  pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
</Console>

我认为log4j2
文档及其示例可能需要更新。



 类似资料:
  • 我有一个类,我在其中获取我的所有属性,并在日志记录之前隐藏它们的密码。 我已经迁移到log4j2,并希望测试这个类,检查log4j2的输出。它目前使用log4j并且可以工作,但是当我迁移到log4j2时,我得到了 但是,还有其他与这个mock的交互:mockappender.getName();->在org.apache.logging.log4j.core.config.AbstractConf

  • 问题内容: 我需要将事件记录到系统日志中。我使用lo4j2和syslog附加程序。我的appender阻止如下所示: 如您所见,我有一个带有特定PatternLayout的Console附加程序和RollingFile附加程序。我想对Syslog附加程序使用相同的PatternLayout。但是,系统日志中的日志消息似乎总是使用预定义的布局。我尝试执行以下操作: 但这没有任何作用。syslog消息

  • 问题内容: 我正在跟踪一些并发问题,在登录到控制台时,使每个线程的输出行具有不同的颜色将非常有帮助。我在OS X上。是否可以使用转换模式输出一些控制代码来完成此操作,或者需要自定义附加程序?有人知道吗? exec-9和exec-10的行应使用不同的颜色。 问题答案: 您可以扩展和覆盖。您可以在那里查看基于线程名称的颜色(奇/偶,也许?)。 为了将颜色输出到控制台,您需要使用ANSI Escape

  • 我正在为我的web应用程序设置log4j2。问题是,这样配置的记录器没有使用Main和Err appender记录任何内容。如果通过调试器查看log4j2代码,就会发现在log4j2初始化期间没有添加这两个附加符。 以前,每个附加程序都有单独的记录器,但我们只需要一个记录器。这样做有可能吗? 类的工厂方法 以及:

  • 我想知道是否可以将spring的其他参数(如)添加到spring boot app中,以便将其作为服务运行。 我检查了由自动生成的脚本: 所以也许它可以通过maven插件的选项来完成,但是除了JVM参数之外找不到其他的,这不是那么有用...

  • 问题内容: 我在log4j2中创建了一个自定义附加程序。使用自定义追加程序时,出现以下错误:“ ERROR试图追加到未启动的追加程序”。任何帮助表示赞赏。 问题答案: Log4j 2将检查每个日志事件附加器是否处于可用状态。您看到的错误是Log4j检测到尚未准备好使用附加程序。 一些附加器需要进行准备才能使用。在生命周期的方法是其中追加程序可以做初始化的地方。Log4j不会将事件路由到未处于STA