gpt4 book ai didi

log4j - 使用 log4j 将 spring 日志转移到特定的日志文件

转载 作者:行者123 更新时间:2023-12-05 07:06:10 27 4
gpt4 key购买 nike

我有以下 log4j 配置,它可以生成两个日志文件,一个包含转移的 SPRING 日志,另一个我试图过滤掉 SPRING 内容,所以它只是我使用 Logger 配置的日志消息:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/debug/debug.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %C.%M() - %m%n" />
</layout>
</appender>

<appender name="SPRING" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/spring/spring.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %C.%M() - %m%n" />
</layout>
</appender>

<logger name="org.springframework" additivity="false">
<level value="debug"/>
<appender-ref ref="SPRING"/>
</logger>

<logger name="org.hibernate" additivity="false">
<level value="debug"/>
<appender-ref ref="SPRING"/>
</logger>


<root>
<priority value="debug" />
<appender-ref ref="DEBUG"/>
<appender-ref ref="SPRING"/>
</root>

</log4j:configuration>

我遇到的问题是仍然有一些 org.springframework.jdbc 调用进入我的调试日志,我希望这些调用被转移到 SPRING 日志文件。

2020-06-26 10:05:29,601 DEBUG [scheduling-1] org.springframework.jdbc.object.SqlCall.compileInternal() - Compiled stored procedure. Call string is [{call SQL(?, ?, ?, ?, ?, ?, ?)}]
2020-06-26 10:05:29,601 DEBUG [scheduling-1] org.springframework.jdbc.object.RdbmsOperation.compile() - RdbmsOperation with SQL [SQL] compiled

我尝试添加另一个记录器但没有成功:

<logger name="org.springframework.jdbc" additivity="false">
<level value="debug"/>
<appender-ref ref="SPRING"/>
</logger>

知道为什么这些记录器没有收集到它吗?

最佳答案

如果您使用的是 log4j2,则可以使用以下格式。请看log4j和 log4j2 spring-examplesSpring-docs供引用。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

<Properties>
<!-- process ID -->
<Property name="PID">????</Property>
<!-- Log exception conversion -->
<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
<!-- log level pattern -->
<Property name="LOG_LEVEL_PATTERN">%5p</Property>
<!-- log date format -->
<Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
<!-- Final console log pattern -->
<Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
<!-- Final file log pattern -->
<Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>

</Properties>

<Appenders>
<!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
</Console>

<!-- File Appender -->
<RollingFile name="File" fileName="${sys:LOG_FILE}" filePattern="${sys:LOG_PATH}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
<PatternLayout>
<Pattern>${sys:FILE_LOG_PATTERN}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
</Appenders>

<!-- Different loggers -->
<Loggers>
<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
<logger name="org.springframework.web" level="warn"/> <!-- pre-defined -->
<logger name="org.springframework.boot.actuate.endpoint.web" level="warn"/>
<logger name="org.springframework.jdbc.core" level="warn"/> <!-- pre-defined -->
<!-- Root configuration (Console/File) -->
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="File" />
</Root>
</Loggers>

</Configuration>

如果仍然无法正常工作,请检查所需的日志是否已启用。 (以确保它们没有被任何配置禁用)

注意:如果您是using spring-boot , Spring boot 的默认日志记录使用 Logback,它作为传递依赖包含在内。

关于log4j - 使用 log4j 将 spring 日志转移到特定的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com