UNPKG

1.69 kBPlain TextView Raw
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License. See License.txt in the project root for license information.
3
4import { HttpPipelineLogLevel } from "./httpPipelineLogLevel";
5
6/**
7 * A Logger that can be added to a HttpPipeline. This enables each RequestPolicy to log messages
8 * that can be used for debugging purposes.
9 */
10export interface HttpPipelineLogger {
11 /**
12 * The log level threshold for what logs will be logged.
13 */
14 minimumLogLevel: HttpPipelineLogLevel;
15
16 /**
17 * Log the provided message.
18 * @param logLevel The HttpLogDetailLevel associated with this message.
19 * @param message The message to log.
20 */
21 log(logLevel: HttpPipelineLogLevel, message: string): void;
22}
23
24/**
25 * A HttpPipelineLogger that will send its logs to the console.
26 */
27export class ConsoleHttpPipelineLogger implements HttpPipelineLogger {
28 /**
29 * Create a new ConsoleHttpPipelineLogger.
30 * @param minimumLogLevel The log level threshold for what logs will be logged.
31 */
32 constructor(public minimumLogLevel: HttpPipelineLogLevel) {}
33
34 /**
35 * Log the provided message.
36 * @param logLevel The HttpLogDetailLevel associated with this message.
37 * @param message The message to log.
38 */
39 log(logLevel: HttpPipelineLogLevel, message: string): void {
40 const logMessage = `${HttpPipelineLogLevel[logLevel]}: ${message}`;
41 switch (logLevel) {
42 case HttpPipelineLogLevel.ERROR:
43 console.error(logMessage);
44 break;
45
46 case HttpPipelineLogLevel.WARNING:
47 console.warn(logMessage);
48 break;
49
50 case HttpPipelineLogLevel.INFO:
51 console.log(logMessage);
52 break;
53 }
54 }
55}