日志可以通过日志主题(Topic)来划分,您可以在采集日志时指定日志主题。

您可以在日志服务控制台上创建Logtail配置时设置日志主题,也可以使用API/SDK上传数据时设置日志主题,支持将Topic生成方式配置为:为空-不生成Topic、机器组Topic属性、文件路径正则和静态主题生成。
  • 空-不生成Topic

    表示不生成日志主题,在查询日志时不需要输入日志主题即可查询。

  • 机器组Topic属性

    用于明确区分不同服务器产生的日志。如果您不同服务器上的日志的保存路径或文件名相同,您可以通过日志主题进行区分。

    您可以将服务器添加到不同的机器组中,并为机器组设置不同的Topic属性,然后在创建Logtail配置时,将Topic生成方式设置为机器组Topic属性。Logtail上报数据时会将服务器所在机器组的Topic属性作为日志主题的名称上传至日志服务,在查询日志时需要指定日志主题(即机器组的Topic属性)为查询条件。

  • 文件路径正则

    该方式用于区分不同用户或实例产生的日志数据。如果不同的用户或者实例将日志保存在不同目录中,但是下级目录和日志文件名相同,日志服务在采集日志时无法明确区分日志是由哪个用户或实例产生的。

    您可以在创建Logtail配置时将Topic生成方式设置为文件路径正则,并且输入文件路径的正则表达式(此处的正则表达式需要完整匹配文件路径)。Logtail上报数据时会将用户名或实例名作为日志主题的名称上传至日志服务,在查询日志时需要指定日志主题(即用户名或实例名)为查询条件。

    例如:在以下目录结构中,不同的用户或者实例将日志记录在不同目录下,但是日志文件名称相同。如果仅配置文件路径为/logs,文件名称为service.log,将三个service.log文件中的内容采集至日志服务,则无法区分日志具体由哪个用户或者哪个实例产生。您可以设置Topic生成方式文件路径正则,并且输入正则表达式\/(.*)\/serviceA\/.*。设置后日志服务会为不同目录下的日志生成不同的日志主题,分别为userA、userB和userC。
    /logs
      | - /userA/serviceA
        | - service.log
      | - /userB/serviceA
        | - service.log
      | - /userC/serviceA
        | - service.log
    说明 文件路径的正则表达式中,需要对字符/进行转义。
    如果文件路径中有多个字段需要单独提取,可以使用多层提取方式,多层提取使用?P<key>方式 (key只支持小写字母和数字的组合)。例如:
    /home/admin/serviceA/userB/access.log
    \/home\/admin\/(?P<service>[^\/]+)/(?P<user>[^/]+)/.*
    则日志会带上自定义tag:
    "__tag__ : service : serviceA"
    "__tag__ : user : userB"
  • 静态主题生成

    Topic生成方式设置为文件路径正则,在自定义正则中输入customized:// + 自定义主题名即可。

    说明 支持的Logtail版本为0.16.21(Linux系统)及以上版本。