1、正常使用
定义一个logback.xml配置文件即可:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 指定日志文件路径(与当前程序jar包同一目录下) -->
<property name="LOG_HOME" value="logs" />
<!--每天生成日志的类-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <!--过滤掉error的级别-->
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_HOME}/mds-tool-box-info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--//打印error-->
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_HOME}/mds-tool-box-error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<!-- <appender-ref ref="consoleLog" />-->
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
2、自定义指定日志文件存储目录
2.1 定义监听器
/**
* @version 1.0
* @class: CustomLogContextListener
* @author: carlo
* @mail: carlo_cwh@qq.com
* @date: 2021/8/25 10:01
* @description: 定义logback 日志监听器,指定日志文件存放目录
*/
public class CustomLogContextListener extends ContextAwareBase implements LoggerContextListener, LifeCycle {
/** 存储日志路径标识 */
public static final String LOG_PAHT_KEY = "LOG_PATH";
@Override
public boolean isResetResistant() {
return false;
}
@Override
public void onStart(LoggerContext loggerContext) {
}
@Override
public void onReset(LoggerContext loggerContext) {
}
@Override
public void onStop(LoggerContext loggerContext) {
}
@Override
public void onLevelChange(Logger logger, Level level) {
}
@Override
public void start() {
// "user.dir"是指用户当前工作目录
String s = System.getProperty("user.dir") + "/logs/";
System.setProperty(LOG_PAHT_KEY, s);
Context context = getContext();
context.putProperty(LOG_PAHT_KEY, s);
}
@Override
public void stop() {
}
@Override
public boolean isStarted() {
return false;
}
}
2.2 在logback.xml日志文件中指定监听器
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 监听器,指定日志文件存放目录 -->
<contextListener class="com.hh.listener.CustomLogContextListener" />
<!--每天生成日志的类-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <!--过滤掉error的级别-->
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/mds-tool-box-info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--//打印error-->
</filter>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/mds-tool-box-error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<!-- <appender-ref ref="consoleLog" />-->
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
其中 ${LOG_PATH} 为我们在监听器中定义的 key 值