@@ -11,22 +11,37 @@ import (
1111var SupportedLogLevels map [string ]struct {}
1212
1313// Changing this also needs to change the logContext.ts file
14- var logLevels = []string {"error" , "warn" , "warning" , "info" , "debug" , "trace" , "severe" , "critical" , "fatal" }
15- var plainLevels = map [string ]* regexp.Regexp {}
16- var bracketLevels = map [string ]* regexp.Regexp {}
14+ var logLevels = [][]string {
15+ {"error" , "err" },
16+ {"warn" , "warning" },
17+ {"info" , "inf" },
18+ {"debug" , "dbg" },
19+ {"trace" },
20+ {"fatal" , "sev" , "severe" , "crit" , "critical" },
21+ }
22+
23+ var plainLevels = map [string ][]* regexp.Regexp {}
24+ var bracketLevels = map [string ][]* regexp.Regexp {}
25+ var timestampRegex = regexp .MustCompile (`^(?:\d{4}[-/]\d{2}[-/]\d{2}(?:[T ](?:\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?|\d{2}:\d{2}(?:AM|PM)))?\s+)` )
1726
1827func init () {
19- for _ , level := range logLevels {
20- plainLevels [level ] = regexp .MustCompile ("(?i)^" + level + "[^a-z]" )
28+ for _ , levelGroup := range logLevels {
29+ first := levelGroup [0 ]
30+ for _ , level := range levelGroup {
31+ plainLevels [first ] = append (plainLevels [first ], regexp .MustCompile ("(?i)^" + level + "[^a-z]" ))
32+ }
2133 }
2234
23- for _ , level := range logLevels {
24- bracketLevels [level ] = regexp .MustCompile ("(?i)\\ [ ?" + level + " ?\\ ]" )
35+ for _ , levelGroup := range logLevels {
36+ first := levelGroup [0 ]
37+ for _ , level := range levelGroup {
38+ bracketLevels [first ] = append (bracketLevels [first ], regexp .MustCompile ("(?i)\\ [ ?" + level + " ?\\ ]" ))
39+ }
2540 }
2641
2742 SupportedLogLevels = make (map [string ]struct {}, len (logLevels )+ 1 )
28- for _ , level := range logLevels {
29- SupportedLogLevels [level ] = struct {}{}
43+ for _ , levelGroup := range logLevels {
44+ SupportedLogLevels [levelGroup [ 0 ] ] = struct {}{}
3045 }
3146 SupportedLogLevels ["unknown" ] = struct {}{}
3247}
@@ -35,25 +50,26 @@ func guessLogLevel(logEvent *LogEvent) string {
3550 switch value := logEvent .Message .(type ) {
3651 case string :
3752 value = stripANSI (value )
38- for _ , level := range logLevels {
53+ value = timestampRegex .ReplaceAllString (value , "" )
54+ for _ , levelGroup := range logLevels {
55+ first := levelGroup [0 ]
3956 // Look for the level at the beginning of the message
40- if plainLevels [level ].MatchString (value ) {
41- return level
57+ for _ , regex := range plainLevels [first ] {
58+ if regex .MatchString (value ) {
59+ return first
60+ }
4261 }
4362
4463 // Look for the level in brackets
45- if bracketLevels [level ].MatchString (value ) {
46- return level
64+ for _ , regex := range bracketLevels [first ] {
65+ if regex .MatchString (value ) {
66+ return first
67+ }
4768 }
4869
4970 // Look for the level in the middle of the message that are uppercase
50- if strings .Contains (value , " " + strings .ToUpper (level )+ " " ) {
51- return level
52- }
53-
54- // Look for levels with equal sign and quotes around them
55- if strings .Contains (value , level + "=" ) {
56- return level
71+ if strings .Contains (value , " " + strings .ToUpper (first )+ " " ) {
72+ return first
5773 }
5874 }
5975
0 commit comments