@@ -97,9 +97,12 @@ interface LogBufferMessage {
9797}
9898
9999class LogBuffer {
100- private messages : LogBufferMessage [ ] = [ ] ;
100+ private readonly messages : LogBufferMessage [ ] = [ ] ;
101+ private readonly enabledDumpIds : strings [ ] ;
101102
102- constructor ( private readonly maxLength : number ) { }
103+ constructor ( private readonly maxLength : number , enabledDumpIds : string [ ] ) {
104+ this . enabledDumpIds = Array . from ( enabledDumpIds ) ;
105+ }
103106
104107 add ( level : LogLevel , msg : string , objs : unknown [ ] ) : void {
105108 const message : LogBufferMessage = {
@@ -114,7 +117,30 @@ class LogBuffer {
114117 this . messages . push ( message ) ;
115118 }
116119
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 {
118144 const now = performance . now ( ) ;
119145 const numBufferedMessages = this . messages . length ;
120146 const i = 1 ;
@@ -142,13 +168,13 @@ class LogBuffer {
142168
143169let logBuffer : LogBuffer | null = null ;
144170
145- export function enableLogBuffer ( maxLength : number ) : void {
171+ export function enableLogBuffer ( maxLength : number , enabledDumpIds ?: string [ ] ) : void {
146172 if ( logBuffer ) {
147173 throw new Error ( 'log buffer has already been enabled' ) ;
148174 }
149- logBuffer = new LogBuffer ( maxLength ) ;
175+ logBuffer = new LogBuffer ( maxLength , ids ?? [ ] ) ;
150176}
151177
152- export function dumpLogBuffer ( ) : void {
153- logBuffer ?. dump ( ) ;
178+ export function dumpLogBuffer ( dumpId ?: string | undefined ) : void {
179+ logBuffer ?. dump ( dumpId ) ;
154180}
0 commit comments