多日志模式支持
一个应用程序可以将不同模块的日志以两种或多种格式写入。例如,某个应用程序可能以一种格式写入访问日志,以另一种格式写入错误日志。在这种情况下,您无需为同一应用程序的每种日志格式单独创建日志类型,而是可以在单个日志类型下创建多个日志模式。
Site24x7 的多日志模式支持功能可让您将同一应用程序以不同格式写入的日志集中管理,并在单一仪表板上可视化展示数据。了解更多关于 Site24x7 AppLogs 的信息。
入门指南
您可以参考此添加日志类型帮助文档获取更多信息。
示例:两个格式不同的日志文件
以下是一个应用程序写入两个不同日志文件(access.log 和 error.log)的示例。
文件 1:访问日志示例及其日志模式
127.0.0.1 - - [21/Jul/2022:12:41:20 +0530] "GET / HTTP/1.1" 200 44 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36"
$RemoteAddress$ - $RemoteUser$ [$Datetime:date$] "$Method$ $RequestURI$ $Protocol$" $Status:number$ $BytesSent:number$ "$Referer$" "$UserAgent$"! "$ForwardedFor$"!
文件 2:错误日志示例及其日志模式
[2022-05-29 16:29:38 +0530] [212777] [INFO] Starting gunicorn 20.1.0
[$Datetime:date$] [$ProcessID:number$] [$LogLevel$] $Message$
利用多日志模式支持功能,您可以在单个日志类型下添加 access.log 文件和 error.log 文件中以不同格式写入的日志模式。

这有助于在单一仪表板上可视化展示访问日志和错误日志数据。

您还可以在查询语言中指定日志模式名称,以过滤特定日志模式的数据。例如,您可以使用以下查询语句查询访问日志模式:
logtype="Gunicorn" and logpattern_name="Access log"
示例:同一文件中包含 JSON 和普通日志
以下是同一文件中同时包含 JSON 日志和单行日志的示例。
文件 1:JSON 日志示例及其日志模式
{"log":"Starting Application Server","stream":"stdout","time":"2022-06-22T20:19:58.980395832Z"}
json $log$ $stream$ $time as Datetime:date:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'$
文件 1:单行日志示例及其日志模式
2021/08/05 20:26:49:000 portAvailability 9090 127.0.0.1
$Datetime:date:yyy/MM/dd HH:mm:ss:SSS$ $Message$
利用多日志模式支持功能,您可以在单个日志类型下创建上述两种日志模式。

- 解析时,日志文件会按照日志模式中列出的顺序依次处理。例如,在上方截图中,日志文件将先解析 JSON 模式的日志,再解析单行模式的日志。
- 如果某条日志匹配多个模式,代理将采用第一个匹配的模式。
- 您可以通过上下箭头图标调整日志模式的顺序。
- 日志示例与日志模式的顺序可能不一致,因为调整日志模式的顺序不会改变日志示例的顺序。
示例:混合使用特定和通用日志模式
以下是一个应用程序写入格式略有不同的相似日志的示例。
使用特定日志模式的日志示例
[05-Jun-2020 12:16:43] [212778] [ERROR] Exception occurred while starting.
[$Datetime:date:dd-MMM-yyyy HH:mm:ss$] [$ProcessID:number$] [$LogLevel$] $Message$
使用通用日志模式的日志示例
[05-Jun-2020 12:16:43] [INFO] Starting gunicorn 20.1.0
[$Datetime:date:dd-MMM-yyyy HH:mm:ss$] $Message$
在上述示例中,两种日志模式几乎相同,仅消息字段格式略有差异。第一种日志模式比第二种更为具体,包含 ProcessID 和 LogLevel 字段。在这种情况下,请始终将更具体的日志模式置于前,通用模式置于后。

限制说明
以下是使用多日志模式支持功能的限制:
- 相同字段名称在各日志模式中的数据类型必须一致。以下模式不受支持,因为字段名 ProcessID 不能同时使用两种不同的数据类型(字符串和数字)。
- 日志模式 1:[$Datetime:date$] [$ProcessID:number$] [$LogLevel$] $Message$
- 日志模式 2:[$Datetime:date$] [$ProcessID$] [$LogLevel$] $Message$
- 最多可添加五个日志模式。
- 日期时间字段的字段名称在各日志模式中必须保持一致。
- 日志模式名称必须唯一,不允许使用以下命名方式。

