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

使用log4j将spring日志转移到特定日志文件,log4j,Log4j,我有下面的log4j配置,它产生两个日志文件,一个带有转移的SPRING日志,另一个我试图过滤掉SPRING内容,所以它只是我使用记录器配置的日志消息: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http

我有下面的log4j配置,它产生两个日志文件,一个带有转移的SPRING日志,另一个我试图过滤掉SPRING内容,所以它只是我使用记录器配置的日志消息:

<?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>
我尝试添加另一个记录器,但没有成功:

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


你知道为什么这些日志记录者没有收集到它吗?

如果你使用的是log4j2,你可以使用下面的格式。请查看和log4j2,以获取参考

<?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>

????
%xwEx
%5p
yyyy MM dd HH:MM:ss.SSS
%clr{%d{{{LOG\u DATEFORMAT\u PATTERN}}{lake}%clr{{{LOG\u LEVEL\u PATTERN}%clr{{${sys:PID}{{magenta}%clr{-}{lake}%clr{[%15.15t]}{lake}%clr{-40.40c{1.}%clr}{syan}%clr}:{sys lake}%m:{lake}%n}%n{u异常转换
%d{${LOG\u DATEFORMAT\u PATTERN}${LOG\u LEVEL\u PATTERN}${sys:PID}-[%t]-40.40c{1.}:%m%n${sys:LOG\u EXCEPTION\u CONVERSION\u WORD}
,Spring boot的默认日志记录使用作为可传递依赖项包含的Logback

<?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>