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

Log4j2-根记录器appender不工作

叶智
2023-03-14

我有一个maven项目,它使用log4j2进行日志记录。我想覆盖RootLogger的模式。

这是我的log4j2。属性文件:

status = debug
name= properties_configuration

# Give directory path where log files should get stored
property.basePath = ./log/

appenders =console, rolling

# ConsoleAppender will print logs on console
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.target = SYSTEM_OUT
appender.console.layout.type = PatternLayout

# Specify the pattern of the logs
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] 
[%c] [%M] [%l] - %msg %xEx %n


# RollingFileAppender will print logs in file which can be rotated based on 
time or size
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName=${basePath}/app.log
appender.rolling.filePattern=${basePath}app_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] 
[%c] [%M] [%l] - %msg %xEx %n
appender.rolling.policies.type = Policies

# Rotate log file each day
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 1
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.rolling.strategy.delete.ifLastModified.age = 30d


logger.example.name = com.parohia
logger.example.level = debug
logger.example.appenderRef.rolling.ref = fileLogger
logger.example.appenderRef.console.ref = consoleLogger

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = consoleLogger

这是我的pom。log4j的xml文件:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>

我这样叫我的记录仪:

      private final Logger logger = LogManager.getLogger(PersoaneController.class);
      try{
          .....
      }
      catch(Exception ex){
           logger.error(ex.getMessage(),ex);
      }

我的配置有两个问题。第一个是根记录器不使用我的ConsolePender(警告等以默认格式显示),在记录错误时,我只得到第一行,而不是整个堆栈跟踪)。

共有1个答案

金兴朝
2023-03-14

如果您的模式在属性文件中实际拆分为多行,如您的问题所示:

appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] 
[%c] [%M] [%l] - %msg %xEx %n

appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] 
[%c] [%M] [%l] - %msg %xEx %n

然后,您需要更改它们,使图案完全位于一条线上:

appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%c] [%M] [%l] - %msg %xEx %n

appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%c] [%M] [%l] - %msg %xEx %n
 类似资料:
  • 在log4j1.2中,您只需在运行时获取一个记录器并添加一个appender。例如,这对于测试目的很方便。我们曾经创建一个模拟appender并将其添加到记录器中。随后,我们可以做出不同的断言。 log4j2的等价物是什么? 例如,这个例子展示了其他人是如何添加测试附加器的。 log4j2页面显示了一些关于如何添加附加器的示例。但是,它们将追加器添加到整个上下文中。这似乎不同于为一个特定的记录器添

  • 我有下面的Log4J2配置XML: 但是,每当log4j2 appender写入文件时,它在写入指定的文件路径时不会使用正确的字符串。 log4j2 appender第一次写入文件时,会写入由指定的正确文件路径。但是,只要将具有另一个Id的员工的信息放入线程上下文中,appender仍然会记录到旧文件路径。 例如,appender第一次记录时,它会写入正确的路径: 但当记录器记录下一个员工Id(使

  • 问题内容: 我创建了一个JDBC附加程序,并绑定了ColumnConfig和DataSourceConnectionSource。 尝试在数据库中插入记录时(Logger.debug(“ Test”))。我遇到了以下异常。 谢谢 问题答案: 抱歉,我之前的回答不正确。可以通过配置修改此行为。默认情况下,所有列(除非除外)都被视为unicode字符串,并且该值是通过方法插入的。如果您使用配置列,则将

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https:

  • 我对log4j2比较陌生。当前,我有以下配置文件: 如果我通过静态记录器在这两个类Consoleain和ClientMain中记录一些东西 而且 他们总是使用根记录器的附加器和级别。如果根记录器的级别是“错误”,那么它永远不会显示任何调试级别的日志输出,即使单个记录器的级别是调试。而且,它总是追加到根记录器中指定的日志文件,而不是类的记录器中指定的日志文件。 所以,根记录器似乎以某种方式覆盖了所有

  • 使用log4j2,我很难让同步记录器和异步记录器一起工作。 从这里以Apache文档(标题为混合同步和异步记录器)为例,运行下面的应用程序将简单地创建日志文件,但不向其写入任何内容。我也不确定添加两个记录器指向同一个appender,但它的Apache留档,所以我假设这是好的。 LOG4J2配置 pom.xml 应用 但是,如果我更改log4j2配置并修改loggers元素以读取以下内容,我将在日