[log_format] check for missing timestamp capture

Related to #1208
pull/1235/head
Tim Stack 5 months ago
parent 69619892e2
commit aa6708f7fb

@ -3022,6 +3022,16 @@ external_log_format::build(std::vector<lnav::console::user_message>& errors)
errors.emplace_back(um);
}
} else if (!ts_cap) {
errors.emplace_back(
lnav::console::user_message::error(
attr_line_t("invalid sample log message: ")
.append(lnav::to_json(elf_sample.s_line.pp_value)))
.with_reason(attr_line_t("timestamp was not captured"))
.with_snippet(elf_sample.s_line.to_snippet())
.with_help(attr_line_t(
"A timestamp needs to be captured in order for a "
"line to be recognized as a log message")));
} else {
attr_line_t notes;

@ -17,6 +17,8 @@ TIME_FORMATS = \
"%Y-%m-%d %H:%M:%S:%L" \
"%Y-%m-%d %H:%M:%S" \
"%Y-%m-%d %H:%M" \
"%Y-%m-%dT%H:%M:%S.%N%z" \
"%y-%m-%dT%H:%M:%S.%N%z" \
"%Y-%m-%dT%H:%M:%S.%f%z" \
"%y-%m-%dT%H:%M:%S.%f%z" \
"%Y-%m-%dT%H:%M:%S.%L%z" \

@ -231,6 +231,8 @@ dist_noinst_DATA = \
ansi-colors.0.in \
bad-config/formats/invalid-file-format/format.json \
bad-config/formats/invalid-json-format/format.json \
bad-config/formats/invalid-name/format.json \
bad-config/formats/invalid-no-tscap/format.json \
bad-config/formats/invalid-properties/format.json \
bad-config/formats/invalid-regex/format.json \
bad-config/formats/invalid-sample/format.json \

@ -0,0 +1,32 @@
{
"$schema": "https://lnav.org/schemas/format-v1.schema.json",
"no_tscap_log": {
"title": "Sample with no captured timestamp",
"multiline": true,
"ordered-by-time": false,
"regex": {
"std": {
"pattern": "^(?<container>[\\w-]+)\\s+\\|( (?<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{9}[+-]\\d{2}:\\d{2}))?( (?<body>.*))?$"
}
},
"level-field": "timestamp",
"module-field": "container",
"value": {
"container": {
"kind": "string",
"identifier": true
}
},
"sample": [
{
"line": "gitea | 2023-09-24T22:15:55.346526305+02:00 2023/09/24 22:15:55 cmd/web.go:223:runWeb() [I] Starting Gitea on PID: 7"
},
{
"line": "gitea | 2023/09/24 22:15:55 cmd/web.go:223:runWeb() [I] Starting Gitea on PID: 7"
},
{
"line": "gitea-db-1 | 2023-09-24T22:15:37.981051393+02:00 [migrations] started"
}
]
}
}

@ -209,6 +209,10 @@
✘ error: “no_sample_log” is not a valid log format
reason: log message samples must be included in a format definition
 --> {test_dir}/bad-config/formats/no-samples/format.json:4
✘ error: invalid sample log message: "gitea | 2023/09/24 22:15:55 cmd/web.go:223:runWeb() [I] Starting Gitea on PID: 7"
reason: timestamp was not captured
 --> {test_dir}/bad-config/formats/invalid-no-tscap/format.json:25
 = help: A timestamp needs to be captured in order for a line to be recognized as a log message
✘ error: failed to compile SQL statement
reason: near "TALE": syntax error
 --> {test_dir}/bad-config/formats/invalid-sql/init.sql:4

Loading…
Cancel
Save