-
Notifications
You must be signed in to change notification settings - Fork 0
/
logformatter.js
161 lines (133 loc) · 6.85 KB
/
logformatter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
class logformatter {
/*
Imported from https://github.com/qwreey75/disbucket/blob/master/init.lua
-- colors
local colors = {
["%[.-:.-:.- WARN%]:.-"] = "\27[33;1m%s\27[0m";
[".-issued server command:.-"] = "\27[32;1m%s\27[0m";
[".-joined the game.-"] = "\27[33;1m%s\27[0m";
[".-left the game.-"] = "\27[33;1m%s\27[0m";
["(%[.- INFO%]: )(%[.+%])(.-)"] = "%s\27[47;1m%s\27[0m%s";
}
local colorsAfter = {
["%d+%.%d+%.%d+%.%d+:%d+"] = "\27[32;1m( IP-Port )\27[0m";
["%d+%.%d+%.%d+%.%d+"] = "\27[32;1m( IP )\27[0m";
[".-issued server command: /w .-"] = "\27[32;1m[ Private Message ]\27[0m";
[".-issued server command: /msg .-"] = "\27[32;1m[ Private Message ]\27[0m";
[".-issued server command: /tell .-"] = "\27[32;1m[ Private Message ]\27[0m";
[".-issued server command: /teammsg .-"] = "\27[32;1m[ Private Message ]\27[0m";
[".-issued server command: /tm .-"] = "\27[32;1m[ Private Message ]\27[0m";
["%[.-:.-:.- WARN%]:.-"] = "\27[33;1m%s\27[0m";
[".-issued server command:.-"] = "\27[32;1m%s\27[0m";
// [".-joined the game.-"] = "\27[33;1m%s\27[0m";
// [".-left the game.-"] = "\27[33;1m%s\27[0m";
["(%[.- INFO%]: )(%[.+%])(.-)"] = "%s\27[47;1m%s\27[0m%s";
}
*/
defaultColorFormatter = [
// ips
[/\d+\.\d+\.\d+\.\d+:\d+/,"\x1b[32;1m( IP-Port )\x1b[0m"],
[/\d+\.\d+\.\d+\.\d+/,"\x1b[32;1m( IP )\x1b[0m"],
// claer some useless datas
[/^\s*(\[\d+:\d+:\d+\] )\[Async Chat Thread - #\d+\/INFO\]:\s?/,"$1"],
[/^\s*(\[\d+:\d+:\d+\] )\[Server thread\/INFO\]:\s?/,"$1"],
// join and leave message
[/^\s*\[\d+:\d+:\d+\] [^ ]+ joined the game/,str=>`\x1b[33;1m${str}\x1b[0m`],
[/^\s*\[\d+:\d+:\d+\] [^ ]+ left the game/,str=>`\x1b[33;1m${str}\x1b[0m`],
// commands
[/^\s*\[\d+:\d+:\d+\] [^ ]+ issued server command:/,str=>`\x1b[32;1m${str}\x1b[0m`],
// advancement
[/^\s*\[\d+:\d+:\d+\] [^ ]+ has made the advancement \[.+\]/,str=>`\x1b[36;1m${str}\x1b[0m`],
// chat
[/^\s*\[\d+:\d+:\d+\] <[^ ]+>/,str=>`\x1b[34;1m${str}\x1b[0m`],
// seed
[/^\s*(\[\d+:\d+:\d+\]) Seed: \[\d+\]/,"$1 Seed: [?????????]"],
// spark
[/^\s*\[\d+:\d+:\d+\] \[Craft Scheduler Thread - \d+ - spark\/INFO\]: (\[.*\] [^\n]+)/,"$1"],
// server started, stopped message
// [/^\s*(\[\d+:\d+:\d+\])? ?Closing Server/,"\x1b[31;1m[ Server closed ]\x1b[0m"],
// [/^\s*(\[\d+:\d+:\d+\])? ?Done \([\d\.]+s\)! For help, type "help"/,"\x1b[32;1m[ Server started ]\x1b[0m"],
]
defaultIgnore = [
// error messages
/^\s*at /,
/^\s*... \d+ more/,
/^\s*Caused by: /,
/^\s*\[\d+:\d+:\d+\] \[.*ERROR\]: /,
/^\s*\[\d+:\d+:\d+\] \[Server console handler\/(INFO|WARN)\]: /,
// /^\s*\[\d+:\d+:\d+\] \[Server thread\/WARN\]: /, // moved wrongly ...
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Server permissions file permissions.yml is empty, ignoring it/,
/^(com|java|sun)\./,
// villager die messages
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Villager EntityVillager/,
// Timings / spark
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Timings/,
/^\s*\[\d+:\d+:\d+\] \[Craft Scheduler Thread - \d+ - spark\/INFO\]: \[.*\] *$/,
/^\s*\[\d+:\d+:\d+\] \[Craft Scheduler Thread - 1 - spark\/INFO\]: [⚡] spark v[\d\.]+/,
// console target messages
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: CONSOLE: /,
// moving check
/^\s*\[\d+:\d+:\d+\] \[Server thread\/WARN\]: [^ ]+ moved (wrongly!|too quickly!)/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/WARN\]: [^ ]+ (vehicle of [^ ]+) moved (wrongly!|too quickly!)/,
// reload
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Server Ping Player Sample Count: /,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Using \d+ threads for Netty based IO/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Loaded \d+ recipes/,
// chunk system
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: \[ChunkHolderManager\]/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: ThreadedAnvilChunkStorage/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Saving chunks for level/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Flushing Chunk IO/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Closing Thread Pool/,
// private messages
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ issued server command: \/teammsg /,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ issued server command: \/tell /,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ issued server command: \/msg /,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ issued server command: \/tm /,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ issued server command: \/w /,
// hidding repeated join and leave message
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ logged in with entity id/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: [^ ]+ lost connection:/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: com.mojang.authlib.GameProfile@/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Disconnecting com.mojang.authlib.GameProfile@/,
// Dragon
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Scanning for legacy world dragon fight\.+/,
/^\s*\[\d+:\d+:\d+\] \[Server thread\/INFO\]: Found that the dragon has not yet been killed in this world\.+/,
// auth and server messages
/^\s*\[\d+:\d+:\d+\] \[User Authenticator #\d+\/(INFO|WARN)\]:/,
/^\s*\[\d+:\d+:\d+\] \[ServerMain\/(INFO|WARN)\]:/,
/^\s*\[\d+:\d+:\d+\] \[Worker-Main-\d+\/(INFO|WARN)\]:/,
]
constructor(config) {
this.config = config
this.colorFormatter = []
this.ignore = []
let colorFormatter = config?.colorFormatter,
ignore = config?.ignore
if (colorFormatter)
this.appendColorFormatter(colorFormatter)
if (ignore)
this.appendIgnore(ignore)
if (!config?.disableLoadDefaultFormatter)
this.appendColorFormatter(this.defaultColorFormatter)
if (!config?.disableLoadDefaultIgnore)
this.appendIgnore(this.defaultIgnore)
}
appendColorFormatter(colorFormatters) {
this.colorFormatter.push(...colorFormatters)
}
appendIgnore(ignores) {
this.ignore.push(...ignores)
}
format(/** @type { String } */ str) {
for (const ignore of this.ignore) {
// console.log(str.match(ignore))
if (str.match(ignore)) return null
}
for (const formatter of this.colorFormatter) {
str = str.replace(formatter[0],formatter[1])
}
return str
}
}
module.exports = logformatter