Skip to content

Commit 31f7afc

Browse files
authored
Warn when stream is closing due to error, not debug. (#3064)
* Warn when stream is closing due to error, not debug. * Add setLogLevel * Improvements. * Add all levels. * Add missing string values for log level
1 parent 9b32270 commit 31f7afc

File tree

5 files changed

+36
-25
lines changed

5 files changed

+36
-25
lines changed

packages/firestore-types/index.d.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ export interface PersistenceSettings {
3737
experimentalTabSynchronization?: boolean;
3838
}
3939

40-
export type LogLevel = 'debug' | 'error' | 'silent';
40+
export type LogLevel =
41+
| 'debug'
42+
| 'error'
43+
| 'silent'
44+
| 'warn'
45+
| 'info'
46+
| 'verbose';
4147

4248
export function setLogLevel(logLevel: LogLevel): void;
4349

packages/firestore/src/api/database.ts

+15-17
Original file line numberDiff line numberDiff line change
@@ -620,8 +620,16 @@ export class Firestore implements firestore.FirebaseFirestore, FirebaseService {
620620
switch (getLogLevel()) {
621621
case LogLevel.DEBUG:
622622
return 'debug';
623+
case LogLevel.ERROR:
624+
return 'error';
623625
case LogLevel.SILENT:
624626
return 'silent';
627+
case LogLevel.WARN:
628+
return 'warn';
629+
case LogLevel.INFO:
630+
return 'info';
631+
case LogLevel.VERBOSE:
632+
return 'verbose';
625633
default:
626634
// The default log level is error
627635
return 'error';
@@ -630,23 +638,13 @@ export class Firestore implements firestore.FirebaseFirestore, FirebaseService {
630638

631639
static setLogLevel(level: firestore.LogLevel): void {
632640
validateExactNumberOfArgs('Firestore.setLogLevel', arguments, 1);
633-
validateArgType('Firestore.setLogLevel', 'non-empty string', 1, level);
634-
switch (level) {
635-
case 'debug':
636-
setLogLevel(LogLevel.DEBUG);
637-
break;
638-
case 'error':
639-
setLogLevel(LogLevel.ERROR);
640-
break;
641-
case 'silent':
642-
setLogLevel(LogLevel.SILENT);
643-
break;
644-
default:
645-
throw new FirestoreError(
646-
Code.INVALID_ARGUMENT,
647-
'Invalid log level: ' + level
648-
);
649-
}
641+
validateStringEnum(
642+
'setLogLevel',
643+
['debug', 'error', 'silent', 'warn', 'info', 'verbose'],
644+
1,
645+
level
646+
);
647+
setLogLevel(level);
650648
}
651649

652650
// Note: this is not a property because the minifier can't work correctly with

packages/firestore/src/platform_browser/webchannel_connection.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import {
4545
import { StreamBridge } from '../remote/stream_bridge';
4646
import { debugAssert, fail, hardAssert } from '../util/assert';
4747
import { Code, FirestoreError } from '../util/error';
48-
import { logDebug } from '../util/log';
48+
import { logDebug, logWarn } from '../util/log';
4949
import { Indexable } from '../util/misc';
5050
import { Rejecter, Resolver } from '../util/promise';
5151
import { StringMap } from '../util/types';
@@ -352,7 +352,7 @@ export class WebChannelConnection implements Connection {
352352
unguardedEventListen<Error>(WebChannel.EventType.ERROR, err => {
353353
if (!closed) {
354354
closed = true;
355-
logDebug(LOG_TAG, 'WebChannel transport errored:', err);
355+
logWarn(LOG_TAG, 'WebChannel transport errored:', err);
356356
streamBridge.callOnClose(
357357
new FirestoreError(
358358
Code.UNAVAILABLE,

packages/firestore/src/platform_node/grpc_connection.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { mapCodeFromRpcCode } from '../remote/rpc_error';
3535
import { StreamBridge } from '../remote/stream_bridge';
3636
import { hardAssert } from '../util/assert';
3737
import { FirestoreError } from '../util/error';
38-
import { logError, logDebug } from '../util/log';
38+
import { logError, logDebug, logWarn } from '../util/log';
3939
import { NodeCallback, nodePromise } from '../util/node_api';
4040
import { Deferred } from '../util/promise';
4141

@@ -230,7 +230,7 @@ export class GrpcConnection implements Connection {
230230
});
231231

232232
grpcStream.on('error', (grpcError: ServiceError) => {
233-
logDebug(
233+
logWarn(
234234
LOG_TAG,
235235
'GRPC stream error. Code:',
236236
grpcError.code,

packages/firestore/src/util/log.ts

+10-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { Logger, LogLevel } from '@firebase/logger';
18+
import { Logger, LogLevel, LogLevelString } from '@firebase/logger';
1919
import { SDK_VERSION } from '../core/version';
2020
import { PlatformSupport } from '../platform/platform';
2121

@@ -28,8 +28,8 @@ export function getLogLevel(): LogLevel {
2828
return logClient.logLevel;
2929
}
3030

31-
export function setLogLevel(newLevel: LogLevel): void {
32-
logClient.logLevel = newLevel;
31+
export function setLogLevel(newLevel: LogLevelString | LogLevel): void {
32+
logClient.setLogLevel(newLevel);
3333
}
3434

3535
export function logDebug(msg: string, ...obj: unknown[]): void {
@@ -46,6 +46,13 @@ export function logError(msg: string, ...obj: unknown[]): void {
4646
}
4747
}
4848

49+
export function logWarn(msg: string, ...obj: unknown[]): void {
50+
if (logClient.logLevel <= LogLevel.WARN) {
51+
const args = obj.map(argToString);
52+
logClient.warn(`Firestore (${SDK_VERSION}): ${msg}`, ...args);
53+
}
54+
}
55+
4956
/**
5057
* Converts an additional log parameter to a string representation.
5158
*/

0 commit comments

Comments
 (0)