logback.xml自定义标签实现(机器名+端口)
需求:
由于大部分服务部署在多台机器上,当服务器资源不足时,存在1台服务器上部署多个相同的服务,为了区分日志,在日志生成的日志文件中添加机器名称和端口号(也支持用命令启动时添加端口),具体实现示例如下:
步骤1:端口设置application.properties中,字段名称为“server.port”
1 | server.port= 8086 |
步骤2:在logback.xml中添加 <springProperty scope="context" name="port" source="server.port"/> ,其中name为名称,下面配置中使用,source是application.properties配置的字段名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)