操作指南

API 文档

日志配置项

最近更新时间:2020-11-13 10:46:12

操作场景

日志配置项用于指定采集日志的规则,包括日志的采集路径和日志解析格式(功能待发布)。用户可以在 TSF 控制台上创建日志配置项,然后将配置项发布到部署组上。同一个部署组可以关联多个日志配置项。

操作步骤

创建日志配置项

  1. 登录 TSF 控制台
  2. 在左侧导航栏 ,单击【日志服务】>【日志配置】。
  3. 在日志配置页,单击【新建配置】,在“创建日志配置”页面中设置您的日志配置项信息。
    • 名称:填写日志配置名称,不超过 60 个字符。
    • 日志类型:选择一种日志类型,目前支持 Spring boot、 Nginx Access 、自定义logback、自定义log4j、 自定义log4j2 、单行/多行文本、无解析规则七种类型。
    • 采集路径:设置您的日志采集路径,可配置一个或者多个日志采集路径。目前支持绝对路径具体到日志文件,如/data/log/2017.log,文件名称允许使用数字、字母、横杠-、下划线_、通配符\*和小数点.。日志文件必须具有文件后缀,文件名和目录支持通配符,如/data/log/*.log/var/log/*/*.log
    • 日志格式:当日志类型为“自定义 logback”、“自定义 log4j”、“自定义log4j2” 及 “单行/多行文本”时,需设置日志格式(参见 日志格式说明)。
      设置日志格式后,您可以通过“格式解析”功能,检验当前的设置是否正确:
      1. 单击“格式解析”,打开“日志格式解析”弹框。
      2. 复制部分日志内容粘贴在“日志内容”区域,单击“解析”按钮,查看“解析结果”区域的输出是否符合预期。
    • 备注:选填,日志配置项的描述信息。
  4. 单击【提交】完成创建。

默认日志配置项

TSF 提供默认日志配置项,格式是 Spring Boot。日志路径包括三部分,相对于应用启动路径:

  • ./*.log
  • ./log/*.log
  • ./logs/*.log

用户可以在微服务应用的配置文件中配置 logging.file 为上述任意一个路径,然后在创建部署组时,选择默认日志配置项 default-log-config

注意:

默认日志配置项仅适用于虚拟机部署的应用。

部署组关联日志配置项

部署组关联日志配置项有两个入口:

  • 用户可以在创建应用时将日志配置项关联到应用。
  • 在日志配置项列表,右侧操作栏中单击【发布配置】。

创建部署组时选择日志配置项

  1. 登录 TSF 控制台
  2. 在左侧导航栏,单击【部署组】。
  3. 单击【新建部署组】,在弹出框中选择关联的日志配置项。
  4. 单击【提交】。

日志配置项列表,发布配置

  1. 登录 TSF 控制台
  2. 在左侧导航栏 ,单击【日志服务】>【日志配置】。
  3. 在日志配置页,单击操作列的【发布配置】。
  4. 选择要绑定的部署组。
  5. 单击【提交】完成发布。

删除日志配置项

当日志配置项没有被其他部署组关联时,才可以删除日志配置项。

  1. 登录 TSF 控制台
  2. 在左侧导航栏,单击【日志服务】>【日志配置】。
  3. 在日志配置页,单击操作列的【更多】>【删除】。
  4. 在删除确认框中单击【确认】,即可删除日志配置项。

日志格式说明

说明:

请尽量保持以年-月-日做日志开头(如:2019-09-21、11:09:48.395,因为分割日志时以这种格式作为分割)。否则,可能导致日志显示分行异常,甚至不能显示日志。

1. Spring Boot

如果应用程序使用默认的 Spring Boot 日志,则选择 Spring Boot 日志类型。不需设置“日志格式”。

2. Nginx Access

如果应用程序使用默认的 Nginx Access 日志,则选择 Nginx Access 日志类型。不需设置“日志格式”。

3. 自定义 Logback

如果应用程序使用 logback 日志配置,设置日志类型为 logback,然后设置日志格式(即日志解析规则,对应 logback 中的 pattern)。可参考 Logback 中关于 Pattern 的介绍。参考模板如下:

  • Pom:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
          <groupId>com.tencent.tsf</groupId>
          <artifactId>tsf-demo</artifactId>
          <version>1.16.0-Edgware-RELEASE</version>
      </parent>
    
      <artifactId>provider-demo</artifactId>
      <packaging>jar</packaging>
      <name>provider-demo</name>
    
      <dependencies>
          <!-- TSF启动器 包含完整依赖 -->
          <dependency>
              <groupId>com.tencent.tsf</groupId>
              <artifactId>spring-cloud-tsf-starter</artifactId>
          </dependency>
      </dependencies>
    </project>
  • Logback.xml(使用时,应用应该依赖有 LogbackTraceConverter 类的 SDK):

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <springProperty scope="context" name="springAppName" source="spring.application.name"/>
      <conversionRule conversionWord="trace" converterClass="com.tencent.tsf.logger.LogbackTraceConverter" />
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
          <!-- encoder 默认配置为PatternLayoutEncoder -->
          <encoder>
              <!-- <pattern>%d %L %c %t %msg%n</pattern>-->
              <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %trace %p %c [%t] %msg%n</pattern>
          </encoder>
      </appender>
      <appender name="TSF" class="ch.qos.logback.core.rolling.RollingFileAppender">
          <File>${LOG_FILE:-Startup}
          </File>
          <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
              <FileNamePattern>${LOG_FILE:-Startup}.%d{yyyy-MM-dd}.%i.log
              </FileNamePattern>
              <MaxHistory>30</MaxHistory>
              <maxFileSize>100MB</maxFileSize>
              <totalSizeCap>1GB</totalSizeCap>
          </rollingPolicy>
          <encoder>
              <!-- <pattern>%d %L %c %t %msg%n</pattern>-->
              <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %trace %p %c [%t] %msg%n</pattern>
              <charset>UTF-8</charset>
          </encoder>
      </appender>
      <root level="info">
          <appender-ref ref="STDOUT" />
          <appender-ref ref="TSF" />
      </root>
    </configuration>

4. 自定义 log4j

如果应用程序使用 log4j 日志配置,设置日志格式为 log4j,然后设置日志格式(即日志解析规则,对应 log4j 中的 pattern)。可参考 log4j 中关于 Pattern 的介绍。参考模板如下:

  • Pom:

    #排除日志中默认的logback依赖,引入log4j的依赖
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
          <groupId>com.tencent.tsf</groupId>
          <artifactId>tsf-demo</artifactId>
          <version>1.16.0-Edgware-RELEASE</version>
      </parent>
    
      <artifactId>consumer-demo</artifactId>
      <packaging>jar</packaging>
      <name>consumer-demo</name>
    
      <dependencies>
          <!-- TSF启动器 包含完整依赖 -->
          <dependency>
              <groupId>com.tencent.tsf</groupId>
              <artifactId>spring-cloud-tsf-starter</artifactId>
              <exclusions>
                  <exclusion>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-logging</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>
          <!--log4j-->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-log4j</artifactId>
              <version>1.3.8.RELEASE</version>
          </dependency>
      </dependencies>
    </project>
  • Log4j.xml(使用时,应用应该依赖有 Log4JPatternLayout 类的 SDK。请注意日志输出路径):

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
       <appender name="console" class="org.apache.log4j.ConsoleAppender">
           <param name="Target" value="System.out"/>
           <layout class="com.tencent.tsf.logger.Log4JPatternLayout">
               <param name="ConversionPattern" value="%d %p %l %c %m%n"/>
           <!-- <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %T %p %F %r %m%n"/>-->
           </layout>
       </appender>
       <appender name="TSF" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="/tsf-demo-logs/provider-demo/root.log" /><!-- 设置日志输出文件名 -->
          <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
          <param name="Append" value="true" />
          <param name="MaxBackupIndex" value="10" />
          <layout class="com.tencent.tsf.logger.Log4JPatternLayout">
              <param name="ConversionPattern" value="%d %p %l %c %m%n"/>
          <!-- <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %T %p %F %r %m%n" />-->
          </layout>
       </appender>
       <root>
           <priority value ="info" />
           <appender-ref ref="console" />
           <appender-ref ref="TSF"/>
       </root>        
    </log4j:configuration>

5. 自定义 log4j2

如果应用程序使用 log4j2 日志配置,设置日志格式为 log4j2,然后设置日志格式。参考模板如下:

  • Pom:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
          <groupId>com.tencent.tsf</groupId>
          <artifactId>tsf-demo</artifactId>
          <version>1.16.0-Edgware-RELEASE</version>
      </parent>
    
      <artifactId>provider-demo</artifactId>
      <packaging>jar</packaging>
      <name>provider-demo</name>
    
      <dependencies>
          <!-- TSF启动器 包含完整依赖 -->
          <dependency>
              <groupId>com.tencent.tsf</groupId>
              <artifactId>spring-cloud-tsf-starter</artifactId>
              <exclusions>
                  <exclusion>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-logging</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>
    
          <!--log4j2-->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-log4j2</artifactId>
              <version>2.1.6.RELEASE</version>
          </dependency>
          <!--log4j2-->
          <dependency>
              <groupId>commons-logging</groupId>
              <artifactId>commons-logging</artifactId>
              <version>1.2</version>
          </dependency>
    
      </dependencies>
    </project>
  • Log4j2.xml(日志文件名应为 log4j2.xml。请注意日志输出路径):

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration status="WARN">
      <Properties>
          <Property name="basePath">/tsf-demo-logs/provider-demo</Property>
      </Properties>
      <appenders>
          <!--  输出控制台的配置 -->
          <Console name="console" target="SYSTEM_OUT">
              <!--  控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
              <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
    
                  <PatternLayout pattern="%d %nano %p %M %uuid %m%n" />
          <!-- <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %trace %level %F [%l] %message%n" />-->
          </Console>
          <RollingFile name="TSF" fileName="${basePath}/root.log" filePattern="${basePath}/root.%d{yyyy-MM-dd}.%i.log">
              <PatternLayout>
                  <PatternLayout pattern="%d %nano %p %M %uuid %m%n" />
              <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %trace %level %F [%l] %message%n</pattern>-->
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy interval="1" modulate="true" />
              </Policies>
          </RollingFile>
      </appenders>
    
      <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
      <loggers>
          <root level="info">
              <appender-ref ref="console"/>
              <appender-ref ref="TSF" />
          </root>
    
      </loggers>
    </configuration>

6. 单行/多行文本

当日志为自定义格式时,可选择日志类型“单行/多行文本”,日志日期时间部分提供四种可选的格式,然后设置剩余部分内容的格式。日期格式支持以下四种:

  • yyyy-MM-dd HH:mm:ss.SSS
  • yyyy-MM-dd HH:mm:ss,SSS
  • dd/MMM/yyyy:HH:mm:ss.SSS
  • dd/MMM/yyyy:HH:mm:ss,SSS

7. 无解析规则

指一行日志内容为一条完整的日志。日志服务在采集的时候,将使用换行符\n来作为一条日志的结束符。为了统一结构化管理,每条日志都会存在一个默认的键值__CONTENT__,但日志数据本身不再进行日志结构化处理,也不会提取日志字段,日志属性的时间项由日志采集的时间决定。

目录