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 |
|
4 | import { 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 | */
|
10 | export 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 | */
|
27 | export 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 | }
|