logback.xml自定义标签实现(机器名+端口)
需求:
由于大部分服务部署在多台机器上,当服务器资源不足时,存在1台服务器上部署多个相同的服务,为了区分日志,在日志生成的日志文件中添加机器名称和端口号(也支持用命令启动时添加端口),具体实现示例如下:
步骤1:端口设置application.properties中,字段名称为“server.port”
server.port=8086
步骤2:在logback.xml中添加 <springProperty scope="context" name="port" source="server.port"/> ,其中name为名称,下面配置中使用,source是application.properties配置的字段名称
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty scope="context" name="port" source="server.port"/>
<!--应用名-->
<property name="APP_NAME" value="xx服务名称" />
<!--日志根目录-->
<property name="LOG_HOME" value="/applog" />
<!--日志通用输出格式-->
<property name="SERIOUS_PATTERN_COMMON" value="[%X{X-B3-TraceId}] [%X{clientIp}] %d{yyyy-MM-dd} %d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n"/><!-- %X{ip} -->
<!--业务摘要 日志-->
<appender name="appDigest" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY </onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${APP_NAME}/${APP_NAME}-${HOSTNAME}-${port}-digest.%d{yyyy-MM-dd}-%i.log</FileNamePattern>
<maxHistory>30</maxHistory>
<!-- 触发策略,达到一定条件时将通知appender,触发滚动 -->
<maxFileSize>500MB</maxFileSize>
</rollingPolicy>
<encoder>
<Pattern>
<!--时间,日志级别, traceid, [(业务类型)(接口名称 方法,接口版本号, 处理结果,耗时)(结果码)(请 求参数列表)]-->
%d{yyyy-MM-dd} %d{HH:mm:ss.SSS},%-5level,%X{X-B3-TraceId},[%X{bizType},%X{interfaceName},%X{version},%X{result},%X{cost},%X{resultCode},%msg] %n
</Pattern>
</encoder>
</appender>
......
步骤3.启动项目在日志存放目录下即可看到日志文件
项目名称-机器名-端口.2022-01-08-0.log
浙公网安备 33010602011771号