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