mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
fix(logs): handle unexpected log messages (#2303)
* fix(logs): handle unexpected log messages * fix(logs): update regexp for json to appease the lgtm gods
This commit is contained in:

committed by
GitHub

parent
febf0677b8
commit
f284e4ab97
@@ -3,7 +3,7 @@ import type { PaginatedResponse } from './common';
|
|||||||
export type LogMessage = {
|
export type LogMessage = {
|
||||||
timestamp: string;
|
timestamp: string;
|
||||||
level: string;
|
level: string;
|
||||||
label: string;
|
label?: string;
|
||||||
message: string;
|
message: string;
|
||||||
data?: Record<string, unknown>;
|
data?: Record<string, unknown>;
|
||||||
};
|
};
|
||||||
|
@@ -258,25 +258,29 @@ settingsRoutes.get(
|
|||||||
try {
|
try {
|
||||||
fs.readFileSync(logFile)
|
fs.readFileSync(logFile)
|
||||||
.toString()
|
.toString()
|
||||||
.split('\n')
|
.split(/(?=\n\d{4}-\d{2})/g)
|
||||||
.forEach((line) => {
|
.forEach((line) => {
|
||||||
if (!line.length) return;
|
if (!line.length) return;
|
||||||
|
|
||||||
const timestamp = line.match(new RegExp(/^.{24}/)) || [];
|
const jsonRegexp = new RegExp(
|
||||||
const level = line.match(new RegExp(/\s\[\w+\]/)) || [];
|
/[{[]{1}([,:{}[\]0-9.\-+Eaeflnr-u \n\r\t]|"[^"\n]*?")+[}\]]{1}/
|
||||||
const label = line.match(new RegExp(/\]\[.+?\]/)) || [];
|
);
|
||||||
const message = line.match(new RegExp(/:\s([^{}]+)({.*})?/)) || [];
|
|
||||||
|
|
||||||
if (level.length && filter.includes(level[0].slice(2, -1))) {
|
const timestamp = line.match(new RegExp(/.{24}/)) || [];
|
||||||
|
const level = line.match(new RegExp(/(?<=.{24}\s\[).+?(?=\])/)) || [];
|
||||||
|
const label =
|
||||||
|
line.match(new RegExp(/(?<=.{24}\s\[.+\]\[).+(?=\])/)) || [];
|
||||||
|
const message =
|
||||||
|
line.match(new RegExp(/(?<=\[.+\]:\s)[\s\S][^\r]+/)) || [];
|
||||||
|
const data = message[0].match(jsonRegexp) || [];
|
||||||
|
|
||||||
|
if (level.length && filter.includes(level[0])) {
|
||||||
logs.push({
|
logs.push({
|
||||||
timestamp: timestamp[0],
|
timestamp: timestamp[0],
|
||||||
level: level.length ? level[0].slice(2, -1) : '',
|
level: level[0],
|
||||||
label: label.length ? label[0].slice(2, -1) : '',
|
label: label[0],
|
||||||
message: message.length && message[1] ? message[1] : '',
|
message: message[0].replace(jsonRegexp, ''),
|
||||||
data:
|
data: data.length ? JSON.parse(data[0]) : undefined,
|
||||||
message.length && message[2]
|
|
||||||
? JSON.parse(message[2])
|
|
||||||
: undefined,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@@ -321,7 +321,9 @@ const SettingsLogs: React.FC = () => {
|
|||||||
{row.level.toUpperCase()}
|
{row.level.toUpperCase()}
|
||||||
</Badge>
|
</Badge>
|
||||||
</Table.TD>
|
</Table.TD>
|
||||||
<Table.TD className="text-gray-300">{row.label}</Table.TD>
|
<Table.TD className="text-gray-300">
|
||||||
|
{row.label ?? ''}
|
||||||
|
</Table.TD>
|
||||||
<Table.TD className="text-gray-300">{row.message}</Table.TD>
|
<Table.TD className="text-gray-300">{row.message}</Table.TD>
|
||||||
<Table.TD className="flex flex-wrap items-center justify-end -m-1">
|
<Table.TD className="flex flex-wrap items-center justify-end -m-1">
|
||||||
{row.data && (
|
{row.data && (
|
||||||
|
Reference in New Issue
Block a user