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

Spring Boot中的记录器问题

董昕
2023-03-14

我使用log4j2.properties文件在Spring Boot应用程序中实现了日志记录。

请在以下参考url中查找代码:

Spring Boot-log4j2.properties创建日志文件,但不将日志写入文件

控制台日志记录正在工作,并且正在创建文件,其中一个日志正在写入文件,但其他日志没有写入文件。

在控制台中打印时,请查找记录器的差异,如下所示:

[INFO ] 2018-08-06 11:48:05.609 [restartedMain] DemoApplication                  - Logger enabled: Entering main //this log is writing into file.

2018-08-06 11:48:14.211  INFO 10788 --- [  restartedMain] c.j.c.DemoApplication                  : **** Demo Application Started *****// this is not writing into file.

但对于两者都使用日志。打印记录器的信息。

有谁能帮忙吗。

共有1个答案

毕富
2023-03-14

您必须仔细检查log4j2.properties文件。我已经用您的示例进行了测试,以下配置工作正常:

name=PropertiesConfig
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=demo.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
loggers=file
logger.file.name=com.testsexample.test5
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT   

主类如下(包名应该对应log4j2.propertieslogger.file.name属性):

package com.testsexample.test5;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Test5Application {

    private final static Logger LOG = LogManager.getLogger(Test5Application.class);

    public static void main(String[] args) {

        LOG.info("Logger enabled: Entering main \n\n");
        SpringApplication.run(Test5Application.class, args);
        LOG.info("**** Demo Application Started *****");
    }
}

项目结构为:

奇怪,但我在几次重新发布后复制了您的问题。请尝试用以下log4j2.xml替换log4j2.properties-xml配置中的问题已经解决

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Properties>
        <Property name="log-path">logs</Property>
        <Property name="LOG_PATTERN">
            [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
        </Property>
    </Properties>
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <File name="FileAppender" fileName="demo.log">
            <PatternLayout>
                <pattern>
                    [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="FileAppender"/>
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
    </Loggers>
</Configuration>

对于每日滚动附件,它将是:

<RollingFile name="FileAppender" fileName="demo.log" filePattern="demo %d{yyyy-MM-dd}.log">
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        </Policies>
    <DefaultRolloverStrategy></DefaultRolloverStrategy>
    </RollingFile>
 类似资料:
  • 1.IdleHandler 2.aidl stub 3.glide 缓存机制,lrucache数据结构 4.双亲委派机制 5.java中锁类型 6.启动模式 activity A—B—C C—A如何实现 7. activity A-B-A生命周期

  • 问题记录 安装、使用kubernetes的过程中遇到的所有问题的记录。 推荐直接在Kubernetes的GitHub上提issue,在此记录所提交的issue。 1.Failed to start ContainerManager failed to initialise top level QOS containers #43856 重启kubelet时报错,目前的解决方法是: 1.在docke

  • 我已经开发了一个用于WebRTC视频呼叫的android应用程序,运行良好。现在的要求是记录通话音频并将其存储在外部存储器中。我尝试过MedieRecorder,它正在录制音频并存储,但这里面临一个问题。当我开始录制音频时,声音在接收器一侧停止。Media Recorder不允许webrtc使用麦克风。 我尝试了以下代码。 我也尝试过“录音机”音频源(媒体记录器,音频源.MIC);录音机音频源(M

  • 问题内容: 我想在我的应用程序中将slf4j + logback用于两个目的-日志和审计。 对于日志记录,我以常规方式记录日志: 对于审计,我创建一个特殊的命名记录器并登录到它: 登录配置: 问题:通过审核记录器记录的消息出现两次-一次在AUDIT_LOGGER下,一次在根记录器下。 14:41:57.975 [main]调试com.gammay.example.Main–> main() 14:

  • 问题内容: 我积极使用脚本进行评分和汇总。我不知道的一件事是如何从脚本发出日志。我尝试了console.log,但后来没有成功。请让我知道,我该如何从常规脚本中发出日志。 问题答案: 这可以通过访问全局Elasticsearch记录器实例来完成。下面提供了它的常规示例。您也应该能够对javascript和其他脚本语言执行类似的操作。 因此,当您进行条款汇总时,可以执行以下操作- 一些来自Elast