// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. import { HttpPipelineLogLevel } from "./httpPipelineLogLevel"; /** * A Logger that can be added to a HttpPipeline. This enables each RequestPolicy to log messages * that can be used for debugging purposes. */ export interface HttpPipelineLogger { /** * The log level threshold for what logs will be logged. */ minimumLogLevel: HttpPipelineLogLevel; /** * Log the provided message. * @param logLevel The HttpLogDetailLevel associated with this message. * @param message The message to log. */ log(logLevel: HttpPipelineLogLevel, message: string): void; } /** * A HttpPipelineLogger that will send its logs to the console. */ export class ConsoleHttpPipelineLogger implements HttpPipelineLogger { /** * Create a new ConsoleHttpPipelineLogger. * @param minimumLogLevel The log level threshold for what logs will be logged. */ constructor(public minimumLogLevel: HttpPipelineLogLevel) {} /** * Log the provided message. * @param logLevel The HttpLogDetailLevel associated with this message. * @param message The message to log. */ log(logLevel: HttpPipelineLogLevel, message: string): void { const logMessage = `${HttpPipelineLogLevel[logLevel]}: ${message}`; switch (logLevel) { case HttpPipelineLogLevel.ERROR: console.error(logMessage); break; case HttpPipelineLogLevel.WARNING: console.warn(logMessage); break; case HttpPipelineLogLevel.INFO: console.log(logMessage); break; } } }