Skip to content

Commit 9b3b856

Browse files
committed
add dump ids
1 parent d2b3678 commit 9b3b856

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

packages/firestore/src/local/simple_db.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,7 @@ export class SimpleDb {
514514
`One possible cause is clicking the "Clear Site Data" button ` +
515515
`in a web browser.`
516516
);
517-
// TODO(dconeybe) REVERT THE NEXT LINE
518-
dumpLogBuffer();
517+
dumpLogBuffer("SimpleDbCloseEvent");
519518
},
520519
{ passive: true }
521520
);

packages/firestore/src/util/log.ts

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,12 @@ interface LogBufferMessage {
9797
}
9898

9999
class 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

143169
let 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

Comments
 (0)