簡體   English   中英

spring 啟動應用程序運行時如何禁用日志消息?

[英]How to disable log messages when spring boot application run?

這是我的 log4j2.xml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn">
        <Properties>
            <Property name="basePath">/folderName/logs/</Property>
        </Properties>
    
        <Appenders>
            <RollingFile name="fileLogger" fileName="${basePath}/fileName.log"
                         filePattern="${basePath}/edf-info-%d{MM-yyyy-dd}.log">
                <PatternLayout>
                    <pattern>%d{MM-yyyy-dd} [%-5level] %l - %msg%n</pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                </Policies>
            </RollingFile>
            <Console name="console" target="SYSTEM_OUT">
                <PatternLayout>
                    <pattern>%d{MM-yyyy-dd} [%-5level] %l - %msg%n</pattern>
                </PatternLayout>
            </Console>
        </Appenders>
        <Loggers>
            <Logger name="com.company.projectName" level="info" additivity="true">
                <appender-ref ref="fileLogger" level="debug"/>
            </Logger>
            <Root level="info" additivity="false">
                <appender-ref ref="console"/>
            </Root>
        </Loggers>
    </Configuration>

當我使用以前版本的 Log4j2 時,只有我的應用程序發送的請求被寫入我計算機上日志文件夾中的日志文件。 例如:

12-2021-27 [INFO ] com.company.projectname.controller.ClassController.methodName(ClassController.java:21) - paramName1, paramname2
12-2021-27 [INFO ] com.company.projectname.service.ClassServiceImpl.methodName(ClassServiceImpl.java:21) - paramName1, paramname2

但是當我切換到新版本的Log4j時,因為這個漏洞,在我上面顯示的消息之前,當我的spring啟動項目運行時,它的消息也被寫入了。 我的意思是專注於跟隨。

12-2021-22 [INFO ] org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:55) - Starting ProjectNameApplication using Java 1.8.0_111 on pc-name with PID 00000 (C:\Workspace\project-name\target\classes started by user.namein C:\Workspace\project-name)
12-2021-22 [INFO ] org.springframework.boot.SpringApplication.logStartupProfileInfo(SpringApplication.java:635) - No active profile set, falling back to default profiles: default
12-2021-22 [INFO ] org.springframework.boot.StartupInfoLogger.logStarted(StartupInfoLogger.java:61) - Started ProjectNameApplication in 8.858 seconds (JVM running for 12.962)

但我不想在我的日志文件中看到這些消息。 我只想在生成請求和響應時編寫消息,就像在我的配置之前一樣。 如何解決這個問題? 我的意思是我只想將消息發送到我的請求和響應的日志文件。

你在一個路徑中有兩個“/”:“/folderName/logs // fileName.log”

如果那不能解決它,也許是一個愚蠢的問題,但是您是否運行了mvn clean install

這些不需要的消息使用SpringApplication#getApplicationLog()來檢索記錄器,其名稱是您的主要 class 的完全限定 class 名稱。 記錄器的名稱可能是"com.company.projectName"的子名稱,因此它被發送到文件附加程序。 您可以通過將%c添加到您的模式布局來確認它。

假設您的主要 class 稱為com.company.projectName.Application ,您可以:

  • 配置僅使用控制台附加程序的com.company.projectName.Application記錄器:

     <Logger name="com.company.projectName.Application" level="INFO" additivity="false"> <AppenderRef ref="console"/> </Logger>
  • 或將com.company.projectName記錄器替換為更具體的記錄器:

     <Logger name="com.company.projectName.controller" level="DEBUG"> <AppenderRef ref="fileLogger" /> </Logger> <Logger name="com.company.projectName.controller" level="DEBUG"> <AppenderRef ref="fileLogger" /> </Logger>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM