日志可以通过日志主题(Topic)来划分,您可以在日志服务控制台上创建Logtail配置时设置日志主题,也可以在使用API或SDK上传数据时设置日志主题。
空-不生成Topic
设置Topic生成方式为空-不生成topic,则表示不生成日志主题。
机器组Topic属性
该方式用于区分不同服务器产生的日志。如果您不同服务器上的日志的保存路径或文件名相同,您可以通过日志主题进行区分。
您可以将服务器添加到不同的机器组中,并为机器组设置不同的Topic属性,然后在创建Logtail配置时,将Topic生成方式设置为机器组Topic属性。Logtail上报数据时会将服务器所在机器组的Topic属性作为日志主题的名称上传至日志服务,在查询日志时需要指定日志主题(即机器组的Topic属性)为查询条件。
文件路径正则
该方式用于区分不同用户或实例产生的日志数据。如果不同的用户或者实例将日志保存在不同目录中,但是下级目录和日志文件名相同,日志服务在采集日志时无法明确区分日志是由哪个用户或实例产生的。
提取文件路径中的单个值
/logs
| - /userA/serviceA
| - service.log
| - /userB/serviceA
| - service.log
| - /userC/serviceA
| - service.log
如果在Logtail采集配置中仅配置文件路径为/logs,文件名称为service.log,将三个service.log文件中的内容采集至同一个Logstore中,则无法区分日志具体由哪个用户产生。您可以通过如下方式提取文件路径中的值,生成不同的日志主题。
- 正则表达式
\/(.*)\/serviceA\/.*
- 提取结果
__topic__: userA __topic__: userB __topic__: userC
提取文件路径中的多个值
例如文件路径为/logs/userA/serviceA/service.log,您可以通过如下方式提取文件路径中的多个值。
- 示例1:使用非命名捕获组进行正则提取。
- 正则表达式
\/logs\/(.*?)\/(.*?)\/service.log
- 提取结果
__tag__:__topic_1__: userA __tag__:__topic_2__: serviceA
- 正则表达式
- 示例2:使用命名捕获组进行正则提取。
- 正则表达式
\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/service.log
- 提取结果
__tag__:user: userA __tag__:service: serviceA
- 正则表达式
静态主题生成
将Topic生成方式设置为文件路径正则,在自定义正则中输入customized:// + 自定义主题名
,表示使用自定义的静态日志主题。