全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
日志服务

文本-配置解析

更新时间:2018-01-12 14:56:00

配置Logtail收集文本文件流程

Logtail按照如下步骤收集日志内容:

指定文件路径名称 > 指定日志行分割方式 > 提取日志字段内容 > 指定日志时间

指定日志行分割方式

一般完整的一条访问日志为一行一条,比如nginx的访问日志,每条日志以换行符分割。例如,两条单行的访问日志如下:

  1. 10.1.1.1 - - [13/Mar/2016:10:00:10 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)"
  2. 10.1.1.1 - - [13/Mar/2016:10:00:11 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)"

Java应用中的程序日志,一条日志通常会跨越多行,因此只能通过日志开头的特征区分每条日志行首,例如以下 Java 程序日志:

  1. [2016-03-18T14:16:16,000] [INFO] [SessionTracker] [SessionTrackerImpl.java:148] Expiring sessions
  2. 0x152436b9a12aecf, 50000
  3. 0x152436b9a12aed2, 50000
  4. 0x152436b9a12aed1, 50000
  5. 0x152436b9a12aed0, 50000

以上Java日志起始字段均为时间格式,可以用“行首正则表达式”描述为 \[\d+-\d+-\w+:\d+:\d+,\d+]\s.*。在控制台可按照如下格式填写:

提取日志字段内容

根据日志服务数据模型要求,一条日志的内容包含一个或者多个 Key-Value 对,如果需要提取指定字段进行分析处理,需要设置正则表达式提取指定内容,如果不需要对日志内容进行处理,可以将整条日志做为一个 Key-Value 对。对于如上访问日志:

  • 提取字段

    1. 正则表达式:(\S+)\s-\s-\s\[(\S+)\s[^]]+]\s"(\w+).*
    2. 提取内容:1)10.1.1.1;2)13/Mar/2016:10:00 ;3)GET
  • 不提取字段

    1. 正则表达式:(.*)
    2. 提取内容:110.1.1.1 - - [13/Mar/2016:10:00:10 +0800] "GET / HTTP/1.1" 0.011 180 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)"

指定日志时间

根据日志服务数据模型要求,一条日志必须要有时间(time)字段,并且格式为unix时间戳。目前提供使用系统时间(即Logtail抓取该条日志的时间)或者日志内容中的时间字段做为日志的时间。

对于上例中的访问日志:

  • 提取日志内容中的时间字段

    1. 时间:13/Mar/2016:10:00:10
    2. 时间表达式:%d/%b/%Y:%H:%M:%S
  • 抓取日志时的系统时间

    1. 时间:抓取日志时的时间戳
本文导读目录