@@ -75,58 +75,51 @@ export class LogViewerProvider implements vscode.TreeDataProvider<LogFile>, vsco
75
75
}
76
76
77
77
private groupLogEntries ( lines : string [ ] , filePath : string ) : LogFile [ ] {
78
- const grouped : { [ key : string ] : { line : string , lineNumber : number } [ ] } = { } ;
78
+ const grouped = new Map < string , { line : string , lineNumber : number } [ ] > ( ) ;
79
79
80
80
lines . forEach ( ( line , index ) => {
81
81
const match = line . match ( / \. ( \w + ) : / ) ;
82
82
if ( match ) {
83
- const level = match [ 1 ] ;
84
- const message = line . replace ( / ^ \[ .* ?\] \s * \. \w + : \s * / , '' ) ; // Entfernt den Zeitstempel und den Punkt
85
- if ( this . isValidLogLevel ( level ) ) {
86
- if ( ! grouped [ level ] ) {
87
- grouped [ level ] = [ ] ;
88
- }
89
- grouped [ level ] . push ( { line : message , lineNumber : index } ) ;
90
- }
83
+ const level = match [ 1 ] . toUpperCase ( ) ; // Changed to uppercase
84
+ const message = line . replace ( / ^ \[ .* ?\] \s * \. \w + : \s * / , '' ) ;
85
+ const entries = grouped . get ( level ) || [ ] ;
86
+ entries . push ( { line : message , lineNumber : index } ) ;
87
+ grouped . set ( level , entries ) ;
91
88
}
92
89
} ) ;
93
90
94
- const summary = Object . keys ( grouped ) . map ( level => {
95
- const count = grouped [ level ] . length ;
91
+ return Array . from ( grouped . entries ( ) ) . map ( ( [ level , entries ] ) => {
92
+ const count = entries . length ;
96
93
const label = `${ level } (${ count } )` ;
97
- const logFile = new LogFile ( label , vscode . TreeItemCollapsibleState . Collapsed , undefined , grouped [ level ] . map ( entry => {
98
- const lineNumber = ( entry . lineNumber + 1 ) . toString ( ) . padStart ( 2 , '0' ) ; // Zeilennummer mit führenden Nullen
99
- return new LogFile ( `Line ${ lineNumber } : ${ entry . line } ` , vscode . TreeItemCollapsibleState . None , { // Fügen Sie hier den Abstand hinzu
100
- command : 'magento-log-viewer.openFileAtLine' ,
101
- title : 'Open Log File at Line' ,
102
- arguments : [ filePath , entry . lineNumber ]
103
- } ) ;
104
- } ) ) ;
105
- switch ( level . toLowerCase ( ) ) {
106
- case 'error' :
107
- logFile . iconPath = new vscode . ThemeIcon ( 'error' ) ;
108
- break ;
109
- case 'warn' :
110
- logFile . iconPath = new vscode . ThemeIcon ( 'warning' ) ;
111
- break ;
112
- case 'debug' :
113
- logFile . iconPath = new vscode . ThemeIcon ( 'debug' ) ;
114
- break ;
115
- case 'info' :
116
- logFile . iconPath = new vscode . ThemeIcon ( 'info' ) ;
117
- break ;
118
- default :
119
- logFile . iconPath = new vscode . ThemeIcon ( 'file' ) ;
120
- }
94
+ const logFile = new LogFile ( label , vscode . TreeItemCollapsibleState . Collapsed , undefined ,
95
+ entries . map ( entry => {
96
+ const lineNumber = ( entry . lineNumber + 1 ) . toString ( ) . padStart ( 2 , '0' ) ;
97
+ return new LogFile (
98
+ `Line ${ lineNumber } : ${ entry . line } ` ,
99
+ vscode . TreeItemCollapsibleState . None ,
100
+ {
101
+ command : 'magento-log-viewer.openFileAtLine' ,
102
+ title : 'Open Log File at Line' ,
103
+ arguments : [ filePath , entry . lineNumber ]
104
+ }
105
+ ) ;
106
+ } )
107
+ ) ;
108
+
109
+ // Set icon based on known log levels, use default for others
110
+ logFile . iconPath = this . getIconForLogLevel ( level ) ;
121
111
return logFile ;
122
112
} ) ;
123
-
124
- return summary ;
125
113
}
126
114
127
- private isValidLogLevel ( level : string ) : boolean {
128
- const validLevels = [ 'error' , 'warn' , 'debug' , 'info' ] ;
129
- return validLevels . includes ( level . toLowerCase ( ) ) ;
115
+ private getIconForLogLevel ( level : string ) : vscode . ThemeIcon {
116
+ switch ( level ) { // Removed toLowerCase() since level is already uppercase
117
+ case 'ERROR' : return new vscode . ThemeIcon ( 'error' ) ;
118
+ case 'WARN' : return new vscode . ThemeIcon ( 'warning' ) ;
119
+ case 'DEBUG' : return new vscode . ThemeIcon ( 'debug' ) ;
120
+ case 'INFO' : return new vscode . ThemeIcon ( 'info' ) ;
121
+ default : return new vscode . ThemeIcon ( 'circle-outline' ) ;
122
+ }
130
123
}
131
124
132
125
getLogFilesWithoutUpdatingBadge ( dir : string ) : LogFile [ ] {
0 commit comments