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

  

posted on 2022-01-08 15:06  qqq9527  阅读(743)  评论(0编辑  收藏  举报

导航