我想根据日志记录级别登录多个文件?是否可以在application.properties的Spring启动中实现,例如error.logs和debug.logs中的错误日志
答案 0 :(得分:3)
您可以通过修改logback.xml文件,根据不同的日志记录级别登录多个文件。 为多个文件定义不同的appender,然后在logback.xml中定义多个记录器,将每个appender与每个记录器相关联。现在,当您更改日志级别时,不同的文件将相应地写入日志。
INFO日志级别的文件附加程序。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./log/elk-file.log</file>
<append>true</append>
<!--cleanHistoryOnStart>true</cleanHistoryOnStart-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./log/elk-file_%d{yyyyMMdd}-%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} [%thread] %level{5} %c{3} - %message%n</pattern>
</encoder>
</appender>
错误日志级别的文件附加程序。
<appender name="FILE_Err" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./log/elk-file.log</file>
<append>true</append>
<!--cleanHistoryOnStart>true</cleanHistoryOnStart-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./log/elk-file_%d{yyyyMMdd}-%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} [%thread] %level{5} %c{3} - %message%n</pattern>
</encoder>
</appender>
现在为Logback.xml中的每个文件定义记录器
<logger name="ro.fortsoft.elk.testdata" level="INFO" additivity="false">
<appender-ref ref="FILE"/>
</logger>
<logger name="ro.fortsoft.elk.newName" level="ERROR" additivity="false">
<appender-ref ref="FILE_Err"/>
</logger>
现在让Logger进入你想要使用它的类
private static final org.slf4j.Logger LOGGER1 = LoggerFactory.getLogger("<name of logger define in logback.xml>");
日志将开始相应地显示在不同的文件中。