@@ -83,9 +83,6 @@ export function parseLogs(logString: string): LogLine[] {
8383
8484// Detect log type based on Xray core message content
8585export const getLogType = ( message : string ) : LogStyle => {
86- const lowerMessage = message . toLowerCase ( )
87-
88- // Xray core log format detection - check bracketed log levels first
8986 if ( / \[ e r r o r \] / i. test ( message ) ) {
9087 return LOG_STYLES . error
9188 }
@@ -102,44 +99,11 @@ export const getLogType = (message: string): LogStyle => {
10299 return LOG_STYLES . debug
103100 }
104101
105- // Fallback pattern detection for non-bracketed logs
106- if (
107- / (?: ^ | \s ) (?: e r r o r | e r r ) : ? \s / i. test ( lowerMessage ) ||
108- / \b (?: e x c e p t i o n | f a i l e d | f a i l u r e ) \b / i. test ( lowerMessage ) ||
109- / (?: s t a c k \s ? t r a c e ) : \s * $ / i. test ( lowerMessage ) ||
110- / ^ \s * a t \s + [ \w . ] + \s * \( ? .+ : \d + : \d + \) ? / . test ( lowerMessage ) ||
111- / \b (?: u n c a u g h t | u n h a n d l e d ) \s + (?: e x c e p t i o n | e r r o r ) \b / i. test ( lowerMessage ) ||
112- / E r r o r : \s .* (?: i n | a t ) \s + .* : \d + (?: : \d + ) ? / . test ( lowerMessage ) ||
113- / \b (?: e r r n o | c o d e ) : \s * (?: \d + | [ A - Z _ ] + ) \b / i. test ( lowerMessage ) ||
114- / \b (?: c r a s h | c r i t i c a l | f a t a l ) \b / i. test ( lowerMessage ) ||
115- / \b (?: f a i l (?: e d | u r e ) ? | b r o k e n | d e a d ) \b / i. test ( lowerMessage )
116- ) {
117- return LOG_STYLES . error
118- }
119-
120- if (
121- / (?: ^ | \s ) (?: w a r n i n g | w a r n ) : ? \s / i. test ( lowerMessage ) ||
122- / \b (?: c a u t i o n | a t t e n t i o n | n o t i c e ) : \s / i. test ( lowerMessage ) ||
123- / (?: d e p r e c a t e d | o b s o l e t e ) \s + (?: s i n c e | i n | a s \s + o f ) / i. test ( lowerMessage ) ||
124- / \b (?: d e p r e c a t e d | o b s o l e t e ) \b / i. test ( lowerMessage ) ||
125- / \b (?: u n s t a b l e | e x p e r i m e n t a l ) \b / i. test ( lowerMessage )
126- ) {
127- return LOG_STYLES . warning
128- }
129-
130- if ( / (?: ^ | \s ) (?: d e b u g | d b g ) : ? \s / i. test ( lowerMessage ) || / \b (?: v e r s i o n | c o n f i g | i m p o r t | l o a d | g e t | H T T P | P A T C H | P O S T ) \b : ? / i. test ( lowerMessage ) || / \b (?: t r a c e ) \b / i. test ( lowerMessage ) ) {
131- return LOG_STYLES . debug
132- }
133-
134- // Default to info for connection logs and general messages
135- if (
136- / \b (?: s t a t u s | s t a t e | c u r r e n t | p r o g r e s s ) \b : ? \s / i. test ( lowerMessage ) ||
137- / \b (?: p r o c e s s i n g | e x e c u t i n g | p e r f o r m i n g ) \b / i. test ( lowerMessage ) ||
138- / (?: c o n n e c t e d | e s t a b l i s h e d | r e a d y ) \s + (?: t o | f o r | o n ) / i. test ( lowerMessage ) ||
139- / \b (?: s t a r t e d | s t a r t i n g | a c t i v e ) \b / i. test ( lowerMessage )
140- ) {
102+ // Xray access logs: "from IP:port accepted tcp/udp:destination:port [info] email: user@example.com"
103+ if ( / f r o m \s + .+ : \d + \s + a c c e p t e d \s + ( t c p | u d p ) : .+ : \d + \s + \[ .+ \] \s + e m a i l : \s + .+ / i. test ( message ) ) {
141104 return LOG_STYLES . info
142105 }
143106
107+ // Default to info
144108 return LOG_STYLES . info
145109}
0 commit comments