添加日志类型
日志类型是对应用程序写入日志的格式的明确定义。默认情况下,Site24x7 支持超过 100 种不同的日志类型。启用 AppLogs,创建日志配置文件,将日志类型关联到配置文件,即可开始采集、分析和管理日志。除 Site24x7 默认支持的日志类型外,您还可以创建自定义日志类型。
添加自定义日志类型
以下视频介绍如何创建日志类型并将其与日志配置文件关联:
如果您的日志类型未在支持的日志类型列表中,您可以创建并定义自定义日志类型。
- 登录您的 Site24x7 账户。
- 导航至管理 > AppLogs > 日志类型,然后点击添加日志类型。
- 显示名称:输入显示名称。
- 最大上传限制: 当前计费周期内您可以为此日志类型上传的最大日志量。此字段仅对购买了日志管理附加组件的用户可见。
- 搜索保留期(天):可从预定义的搜索保留期选项中选择——7、15、30、60 或 90 天——以保留日志。此设置指定采集的日志数据在 Site24x7 中存储并可用于搜索的天数,默认值为 7 天。了解更多。
-
存储保留期:点击购买附加组件后,您可以为每种日志类型启用特定的存储保留期。可从六个月、一年、两年、三年、四年和五年中选择。此设置决定采集的日志数据在 Site24x7 中的存储时长。
注意默认存储保留期与您配置的搜索保留天数相同。
- 自动发现:切换启用以自动在与此日志类型关联的所有新服务器上查找此日志格式,并开始上传。
- 示例日志: 提供示例日志行以发现日志模式。点击加号图标 + 可添加多行日志。AppLogs 提供多种日志模式,可在单个日志类型中组合不同的日志模式。AppLogs 还支持多行、JSON、键值和 XML 格式日志。

- 日志模式:日志模式是 Site24x7 解析日志的格式,可以根据需求进行自定义。您也可以使用默认生成的模式提交日志类型,我们的团队将在您提交后验证并更新正确的日志模式。
对于某些示例日志,系统会默认识别并生成日志模式。在这种情况下,请将默认名称替换为相关字段名称。您可以定义日志模式以创建自定义日志模式。注意当您使用 AgentDateTime 的默认模式提交日志类型时,保存后将显示一条提示信息。如果日志行中没有有效的日期和时间值,我们将使用 AgentDateTime 作为日期格式,这意味着日志行将显示我们的 Agent 读取日志时的时间。
每当使用默认 AgentDateTime 创建日志类型时,我们的团队将验证其是否有效。如果无效,将更新正确的日期时间格式。
如果您的日志中有有效的日期和时间格式,请参阅定义日期字段部分,配置正确的日期字段。
10. 定义模式并输入名称后,点击勾号图标
保存模式。您也可以点击快速帮助图标
获取日志模式帮助。
如果仍需帮助创建日志模式,您可以将示例日志行发送至 support@site24x7.com 联系支持团队。
- 如果希望通过 HTTPS 端点发送日志,请启用 API 上传。
- 高级配置:切换至是以启用日志采集停止时通知,设置告警通知。
- 点击保存并继续以编辑日志配置文件。
- 如果已创建日志配置文件并编辑了日志类型,直接点击保存即可。

高级配置
配置相关设置,以便在账户中已配置服务器上的任何日志类型的日志采集停止时接收告警通知。您可以在添加日志类型时配置,也可以在现有日志类型上编辑。
- 日志采集停止时通知:切换至是,以接收有关您从选择错误类型下拉菜单中选择的日志采集错误的通知;切换至否以关闭通知。
- 如果日志采集在指定小时内未发生则生成告警:配置通知,以在日志采集在所选日期内连续失败达到指定小时数时接收告警。阈值可设置在 1 小时到 720 小时之间。例如,如果某天的日志采集在 6 小时内未发生,您可以配置此选项来接收告警,此时从下拉菜单中选择 6 和所有日期即可。
- 选择接收日志采集告警的用户:默认情况下,超级管理员和账单联系人用户将收到日志采集错误的告警通知。您也可以从下拉菜单中选择合适的用户。
- 选择错误类型:选择特定错误类型以接收告警,避免因常见日志采集失败产生不必要的通知。默认情况下,您将收到以下错误的告警:
-
- 日志模式不匹配
- 日志文件权限被拒
- 仅告警一次:默认情况下,此任务每 30 分钟执行一次。从下拉菜单中配置您希望接收告警的频率。

您可以在 AppLog 搜索中开始搜索已采集的日志。输入新创建的日志类型,并利用字段浏览器或查询语言来细化搜索。
定义日志模式
每个字段名称应以 $ 开头和结尾(例:$Message$)。自定义日志模式可在日志模式部分使用以下语法定义:
日志模式
$FieldName:DataType:Format$
| 属性 | 描述 |
| 字段名称 | 为属性提供描述 |
| 数据类型 | 这是与字段名称关联的数据类型。字段名称可以是以下数据类型: - Number(数字) - String(字符串) - Date(日期) - (文件夹或文件 | 不同语言 | 无日期值 | 无日期和时间值) - Decimal(小数) - IP(IPv4 或 IPv6) - Word(单词) - Config(配置) - Pattern(模式) - JSON 对象 - JSON 数组 |
| 格式 | 仅"Date"数据类型需要格式,其他数据类型无需格式 |
-
定义 Number(数字)字段
($FieldName:Number$)
其中 Number 是与字段名称关联的值的数据类型。 -
定义 String(字符串)字段
($FieldName$) 或 ($FieldName:String$)
其中 String 是与字段名称关联的文本。
(注意:String 是默认数据类型,因此无需单独指定)。 -
定义 Date(日期)字段
($FieldName:Date:Format$)
其中 FieldName 是变量名,Date 是该变量的数据类型。Date 变量必须定义格式。
例如,$DateTime:date:EEEE MMM dd HH:MM:SS:SSS yyyy$
日期字段 示例日志 日志模式 Tuesday Sep 19 13:34:56.123 2007 - 格式应为 EEEE MMM dd HH:mm:ss:SSS yyyy Tuesday Sep 19 13:34:56.123 2007 Starting App Server $Datetime:date:EEEEE MMM dd HH:mm:ss.SSS yyyy$ $message$ Sep 19 2007 13:34:56 123456 PST - 格式应为 MMM dd yyyy HH:mm:ss SSSSS z Sep 19 2007 13:34:56:123456 PST Starting App Server $Datetime:date:MMM dd yyyy HH:mm:ss:SSSSS z$ $message$ 19-09-07 1:34:56 pm -0800 - 格式应为 yy-MM-dd hh:mm:ss a Z 19-09-07 1:34:56 pm -0800 Starting App Server $Datetime:date:yy-MM-dd hh:mm:ss a Z$ $message$ 13:34:56,262 - 格式应为 HH:mm:ss,D 13:34:56,262 Starting App Server $Datetime:date:HH:mm:ss,D$ $message$ Tue September 19 13:34:56 - 格式应为 EEE MMMM dd HH:mm:ss Tue September 19 13:34:56 Starting App Server $Datetime:date:EEE MMMM dd HH:mm:ss$ $message$ 对于 Unix 时间(秒)1190234095,格式应为 $DateTime:date:unix$ 1190234095 Starting App Server $Datetime:date:unix$ $message$ 支持的日期格式:
格式要求 日期格式 示例 年份 - 2 位 yy (或) y 17 或 7 年份 - 4 位 yyyy 2017 月份 - 2 位 MM 07 月份 - 3 个字母 MMM Sep 月份全名 MMMM September 日期 dd 19 小时(0-12) hh 1 小时(0-23) HH 13 分钟 mm 34 秒 ss 56 毫秒 SSS 123 时区(+0800;-1100)
时区(PST)
时区(-08:00)Z
z
X-0800
PST
+01:00一年中的第几天 D 262 星期名称 - 3 个字母 EEE Tue 星期全名 EEEE Tuesday AM/PM/am/pm a pm Unix 时间 - 自纪元起的秒数 unix 1190234095 Unix 时间 - 自纪元起的毫秒数 unixm 1190234095123 Unix 时间 - 自纪元起的微秒数 unixu 1585597114.768750 从文件夹或文件名中获取日期值
注意文件夹名称通常只包含年、月、日字段。只有当日志行末尾包含小时、分钟和秒值时,我们才会获取日期值。
$DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$ $
$DateTime:date:@file(yyyy-MM-dd)HH:mm:ss$ $
$DateTime:date:@filepath(yyyy-MM-dd)HH:mm:ss$ $
例如,
示例日志11:10:11 CassandraDaemon:init Logging initialized
11:10:12 YamlConfigurationLoader:load Loading settings from file
11:10:13 DatabaseDescriptor:data Data files directories日志模式
$DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$ $ClassName$:$Method$ $Message$
文件名:D:\MyWebApp\2020-01-15\process.log
此处,日期值存在于日志文件的父文件夹中,因此在日志模式中使用 @folder。
采集日志行中没有日期值的日志
有时,日志行只有时间字段而没有日期值。在这种情况下,需要配置以下日期模式来采集日志。
示例日志
11:10:11 CassandraDaemon:init Logging initialized
11:10:12 YamlConfigurationLoader:load Loading settings from file
11:10:13 DatabaseDescriptor:data Data files directories日志模式
$DateTime:date:@filedate(yyyy-MM-dd)HH:mm:ss$ $ClassName$:$Method$ $Message$
此处,@filedate 将从文件的最后修改日期中获取日期值。
采集日志行中没有日期和时间值的日志
有时,日志行中既没有时间字段也没有日期字段的值。在这种情况下,需要配置以下日期模式来采集日志。
示例日志
CassandraDaemon:init Logging initialized
YamlConfigurationLoader:load Loading settings from file
DatabaseDescriptor:data Data files directories日志模式
$DateTime:date:agent_time$ $ClassName$:$Method$ $Message$
此处,agent_time 将使用 Agent 安装机器读取日志时的当前时间。
解析不同语言的日期值
例如,以下日志行包含葡萄牙语的日期值。
示例日志
Log Entry: 00:00:07 quinta-feira, 10 outubro 2019 Iniciando recebimento de mensagem
Log Entry: 00:00:07 quinta-feira, 10 outubro 2019 Buscando mensagems na fila Quantidade=0
Log Entry: 00:00:08 quinta-feira, 10 outubro 2019 Sucesso ao buscar quantidade: CM_OK日志模式
Log Entry: $DateTime:date:pt(HH:mm:ss EEEE, dd MMMM yyyy)$ $Message$
此处,"pt"表示葡萄牙语的语言代码。
-
定义 Decimal(小数)字段
($FieldName:Decimal$)
其中 Decimal 是与字段名称关联的值的数据类型。例:165.5 -
定义 IP 字段
($FieldName:ip$)
其中 IP 是与字段名称关联的值的数据类型,可以是 IPv4 或 IPv6 值。
例:192.0.2.1,2001:0db8:85a3:0:0:8a2e:0370:7334 -
定义 Word(单词)字段
($Filename:word$)
其中 Word 是与字段名称关联的值的数据类型。Word 是 String 的子集,但字段只能包含一个单词。如果存在多个单词,应定义为 String。 -
定义 Config(配置)字段
($FileName:config:@file$)
其中 @file 是与字段名称关联的配置类型。
例:@folder、@file、@ip、@host
($FieldName:config:@filepath$)
例:C:\Program Files\cassandra\logs\server.log
此处,如果指定文件路径,Site24x7 AppLogs 将获取文件的完整路径并将其插入该字段。
如果希望添加特定文件夹(例如 Cassandra),可以按以下方式定义字段:
$FieldName:config:@filepath:2$
注意在以下示例中,config 字段定义在日志模式末尾,$Message$ 和 $FileName:config:@file$ 之间没有空格。配置 config 字段时,最后一个字段后不要留空格。
如需在单独字段中捕获文件夹名称和文件名,在模式中使用两个 config 字段,如以下示例所示:$Datetime:date:dd-MMM-yyyy hh:mm:ss:SSS a$ $Message$$FileName:config:@file$
$Datetime:date:dd-MMM-yyyy hh:mm:ss:SSS a$ $Message$$FileName:config:@file$$FolderName:config:@folder$
-
定义 Pattern(模式)字段
此数据类型专用于 JSON 文件,用于为同一日志中任何 JSON 对象值定义模式。
模式 1:
json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield:date:dd/EEE/yyyy:HH:mm:ss$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize:number$ $Referer$ $UserAgent$$ $stream$ $time$
此处,日期字段位于数据类型模式字段内部。
模式 2:
json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize:number$ $Referer$ $UserAgent$$ $stream$ $time:date:yyyy-mm-dd'T'HH:mm:ss.SSS'Z'$
此处,日期字段位于数据类型模式字段外部。
示例日志:
{"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
{"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
{"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"} -
定义 JSON 对象
($FieldName:json-object$)此数据类型专用于 JSON 日志。
json $widgetId:number$ $name$ $description$ $params:json-object$ $version$ $timestamp:date:yyyy-MM-dd HH:mm:ss$
此处,json-object 是与 params 字段名称关联的值的数据类型。
示例日志:
{"timestamp":"2024-02-12 12:12:12","name":"Request Count of Sample App","widgetId":12,"description":"Event description","params":{"selected":212,"period":0},"version":"0.1"} -
定义 JSON 数组
($FieldName:json-array:($FirstKey$ $SecondKey$ $ThirdKey$)$)
此数据类型专用于 JSON 日志。
json $routePlannerRouteId$ $routeDate:date:yyyy-MM-dd'T'HH:mm:ss$ $routeId$ $regionId$ $oprCode$ $stopdetails:json-array:($locationKey$ $attributes$ $routePlannerStopId$ $stopETA$)$
此处,json-array 是与 stopdetails 字段名称关联的值的数据类型。
示例日志:
{"routePlannerRouteId":"10010202","routeId":"10010202","routeDate":"2022-12-09T00:00:00","regionId":"548","oprCode":"initialETA","stopdetails":[{"attributes":"test1","locationKey":"53w4","routePlannerStopId":"257288","stopETA":"2022-12-10T15:27:09-05:00"},{"attributes":"test2","locationKey":"257288","routePlannerStopId":"257288","stopETA":"2022-12-09T13:26:58-05:00"},{"attributes":"test3","locationKey":"442433","routePlannerStopId":"442433","stopETA":"2022-12-10T15:27:09-05:00"}]} -
转义特殊字符
如果日志行包含特殊字符,使用 ESC(
包含特殊字符的示例日志:)。
2022-01-12 22:00:29,793 GMT*16.2*Message
2022-01-12 22:00:29,793 GMT*16.2*Message
2022-01-12 22:00:29,793 GMT*16.2*Message则日志模式应定义为:
$Datetime:date:yyyy-MM-dd HH:mm:ss,S z$ESC(*)$Version$ESC(*)$Message$
日志模式示例
以下日志模式受支持:
- 简单日志模式
- 包含默认字符的日志模式
- 包含自定义日期格式的日志模式
- 包含字段排除的日志模式
-
简单日志模式:
注意在此模式中,所有字段仅以空格分隔。
示例日志:
3489 M 04 Mar 09:13:40.537 # WARNING: The TCP backlog setting of 511 cannot be enforced日志模式:
$PID:number$ $Role$ $DateTime:date$ $LogLevel$ $Message$
字段名称 字段值 PID 3489 Role M DateTime 04 Mar 09:13:40.537 LogLevel # Message WARNING: The TCP backlog setting of 511 cannot be enforced
-
包含默认字符的日志模式:
注意对于所有日志行中重复出现的固定字母或单词,可以在日志模式中指定这些字符来排除它们。以下示例中排除了 [、]、*、: 等字符。
示例日志:
2017/08/01 01:05:50 [error] 28148#1452: *154 FastCGI sent in stderr日志模式:
$DateTime:date$ [$LogLevel$] $ProcessId:number$#$ThreadId:number$: *$UniqueId:number$ $Message$
字段名称 字段值 DateTime 2017/08/01 01:05:50 LogLevel error ProcessId 28148 ThreadId 1452 UniqueId 154 Message FastCGI sent in stderr
-
包含自定义日期格式的日志模式:
注意如果示例日志包含不同的日期格式,用户需要在日志模式中提供确切的日期格式。
示例日志:
demo_user demo_db 192.168.22.10 58241 2018-01-08 11:58:23 AEDT FATAL: no pghba.conf entry for host日志模式:
$User$ $DB$ $RemoteIP$ $PID$ $DateTime:date:yyyy-MM-dd HH:mm:ss z$ $LogLevel$: $Message$
字段名称 字段值 User demo_user DB demo_db RemoteIP 192.168.22.10 PID 58241 DateTime 2018-01-08 11:58:23 AEDT LogLevel FATAL Message no pghba.conf entry for host
-
包含字段排除的日志模式:
注意在某些情况下,并非所有日志行具有相同数量的字段。某些日志行可能有 5 个字段,而另一些只有 4 个字段。在这种情况下,必须在日志模式中使用 '!' 符号排除缺失的字段。在以下示例中,第二条日志行中缺少 "ProcessId",因此在日志模式中排除了该字段。
示例日志:
Aug 7 07:35:02 log-host systemd[1]: Stopping CUPS Scheduler
Aug 7 08:40:02 log-host kernel: 817216.167300] audit: type=1400日志模式:
$DateTime:date$ $Host$ $Application$![$ProcessId$]!: $Message$
字段名称 字段值 - 第 1 行 字段值 - 第 2 行 DateTime Aug 7 07:35:02 Aug 7 08:40:02 Host log-host log-host Application systemd kernel ProcessId 1 - Message Stopping CUPS Scheduler 817216.167300] audit: type=1400
通过 API 端点发送日志
Site24x7 允许您通过 HTTPS 端点将日志发送到 AppLogs。
更新字段配置
- 在示例输出表中,将鼠标悬停在字段名称上,找到
图标并点击。 - 在打开的 ThreadId - 字段配置窗口中,从左侧窗格选择所需字段,并在右侧填写选项。
- 显示名称:名称将根据您从左侧窗格选择的字段自动填入。
- 此字段的单位:选择合适的单位,此选项仅适用于数字字段。
- 如果希望启用以下选项,请切换至是。
- 启用分组:对具有相同值的条目进行分组。
- 分组的字符长度: 指定在分组查询输出中显示的字符数,每个字段最多可添加 200 个字符。
- 从搜索结果中隐藏此字段:查看搜索结果时隐藏此特定字段。
- 启用脱敏:切换至是以启用脱敏。以捕获组的形式在正则表达式中提供要脱敏的数据表达式,以及脱敏字符串。
- 启用哈希:切换至是以启用哈希。提供表达式并将要哈希的数据包含在正则表达式的捕获组中。了解更多关于脱敏和哈希的信息。
在源端过滤日志行
- 仅选择此字段符合以下条件的日志行: 从以下选项中选择:匹配、不匹配、包含、不包含,以选择满足下方以下任意值字段中的值的日志行。
请参考以下示例:
- 如果不想采集 INFO 日志,选择不匹配,并在下方的以下任意值字段中输入 INFO。
- 如果只想采集包含单词 system 的日志,选择包含,并在下方的以下任意值字段中输入 system。
注意
过滤器中的值区分大小写。
- 以下任意值:为上述指定条件输入一个值。
- 在源端忽略此字段:切换至是,在 Agent 端上传之前忽略该特定字段。
- 点击应用。

颜色条件
使用颜色条件对日志进行颜色编码,并使用正则表达式或精确匹配设置自定义规则,确保在搜索结果和仪表板组件中保持一致的可见性。
派生字段支持
使用派生字段支持,您可以为未解析字段定义正则表达式以提取必要信息。
日志标签
使用日志标签有效地分类和过滤日志。应用预定义或自定义日志标签规则,搜索已标记的日志,并创建告警,以实现精简的日志管理。
