示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds" debug="true">
<!--日志文件存储路径-->
<property name="log_path" value="./logs"></property>
<!-- 编码格式设置 -->
<property name="encoding" value="UTF-8" />
<!--获取TID-->
<conversionRule conversionWord="tid" converterClass="org.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter" />
<!--获取当前主机IP地址-->
<define name="ip" class="com.**.config.LogIpPropertyConfig"></define>
<!--定义日志格式-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<property name="log_pattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%p][{%thread}][TID: %tid][%logger#%M %L]LINECONTENT:%m%n"></property>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
<!--<append>true</append>-->
<encoder charset="UTF-8">
<!-- 输出日志记录格式 -->
<pattern>${log_pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<!-- 输出日志到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 日志输出格式 -->
<charset>${encoding}</charset>
<pattern>${log_pattern}</pattern>
</encoder>
<!--<file>./logs</file>-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 输出日志文件的名 -->
<fileNamePattern>${log_path}/${ip}-iac-web-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 保存30天的日志 -->
<maxHistory>30</maxHistory>
<!--单个日志文件最多50M-->
<maxFileSize>50MB</maxFileSize>
<!--最大不能超过2GB-->
<totalSizeCap>2GB</totalSizeCap>
<!--启动时执行清除过期日志-->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 输出日志到文件 -->
<appender name="REDIS_MASTER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 日志输出格式 -->
<charset>${encoding}</charset>
<pattern>${log_pattern}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 输出日志文件的名 -->
<fileNamePattern>${log_path}/${ip}-iac-redis-%d{yyyy-MM}.%i.log</fileNamePattern>
<!-- 保存30天的日志 -->
<maxHistory>30</maxHistory>
<!--单个日志文件最多50M-->
<maxFileSize>50MB</maxFileSize>
<!--最大不能超过2GB-->
<totalSizeCap>2GB</totalSizeCap>
<!--启动时执行清除过期日志-->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- root节点,用来指定最基础的日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!--logger节点,可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别,name 属性表示匹配的logger类型前缀-->
<!--logger中有一个additivity属性,作用在于 children-logger是否使用 rootLogger配置的appender进行输出-->
<!--false:表示只用当前logger的appender-ref。true:表示当前logger的appender-ref和root Logger的appender-ref都有效。-->
<logger name="com.**.core.redis" level="DEBUG" additivity="false">
<appender-ref ref="REDIS_MASTER"/>
</logger>
<logger name="org.springframework" level="WARN"></logger>
<logger name="org.mybatis" level="DEBUG"></logger>
</configuration>
获取当前主机IP地址:
自定义类并继承 ch.qos.logback.core.PropertyDefinerBase 类,重写 getPropertyValue()方法:
/**
* @author huangdh
* @version 1.0
* @description:
* @date 2022-10-09 15:16
*/
public class LogIpPropertyConfig extends PropertyDefinerBase {
private static final Logger logger = LoggerFactory.getLogger(LogIpPropertyConfig.class);
private static String ip;
static {
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
logger.error("获取日志IP地址异常",e);
ip = null;
}
}
@Override
public String getPropertyValue() {
return ip;
}
}
标签:xml,log,spring,static,logback,ip,pattern,true From: https://www.cnblogs.com/huangdh/p/16778072.html