@@ -97,9 +97,12 @@ interface LogBufferMessage {
97
97
}
98
98
99
99
class LogBuffer {
100
- private messages : LogBufferMessage [ ] = [ ] ;
100
+ private readonly messages : LogBufferMessage [ ] = [ ] ;
101
+ private readonly enabledDumpIds : strings [ ] ;
101
102
102
- constructor ( private readonly maxLength : number ) { }
103
+ constructor ( private readonly maxLength : number , enabledDumpIds : string [ ] ) {
104
+ this . enabledDumpIds = Array . from ( enabledDumpIds ) ;
105
+ }
103
106
104
107
add ( level : LogLevel , msg : string , objs : unknown [ ] ) : void {
105
108
const message : LogBufferMessage = {
@@ -114,7 +117,30 @@ class LogBuffer {
114
117
this . messages . push ( message ) ;
115
118
}
116
119
117
- dump ( ) : void {
120
+ private isDumpIdEnabled ( dumpId : string | undefined ) : boolean {
121
+ if ( dumpId === undefined ) {
122
+ return true ;
123
+ } else if ( this . enabledDumpIds . length === 0 ) {
124
+ return true ;
125
+ } else {
126
+ return this . enabledDumpIds . includes ( dumpId ) ;
127
+ }
128
+ }
129
+
130
+ dump ( dumpId ?: string | undefined ) : void {
131
+ if ( ! this . isDumpIdEnabled ( dumpId ) ) {
132
+ return ;
133
+ }
134
+ const oldLogLevel = logClient . logLevel ;
135
+ logClient . setLogLevel ( LogLevel . DEBUG ) ;
136
+ try {
137
+ this . doDump ( ) ;
138
+ } finally {
139
+ logClient . setLogLevel ( oldLogLevel ) ;
140
+ }
141
+ }
142
+
143
+ private doDump ( ) : void {
118
144
const now = performance . now ( ) ;
119
145
const numBufferedMessages = this . messages . length ;
120
146
const i = 1 ;
@@ -142,13 +168,13 @@ class LogBuffer {
142
168
143
169
let logBuffer : LogBuffer | null = null ;
144
170
145
- export function enableLogBuffer ( maxLength : number ) : void {
171
+ export function enableLogBuffer ( maxLength : number , enabledDumpIds ?: string [ ] ) : void {
146
172
if ( logBuffer ) {
147
173
throw new Error ( 'log buffer has already been enabled' ) ;
148
174
}
149
- logBuffer = new LogBuffer ( maxLength ) ;
175
+ logBuffer = new LogBuffer ( maxLength , ids ?? [ ] ) ;
150
176
}
151
177
152
- export function dumpLogBuffer ( ) : void {
153
- logBuffer ?. dump ( ) ;
178
+ export function dumpLogBuffer ( dumpId ?: string | undefined ) : void {
179
+ logBuffer ?. dump ( dumpId ) ;
154
180
}
0 commit comments