httpPipelineLogger.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. import { HttpPipelineLogLevel } from "./httpPipelineLogLevel";
  4. /**
  5. * A Logger that can be added to a HttpPipeline. This enables each RequestPolicy to log messages
  6. * that can be used for debugging purposes.
  7. */
  8. export interface HttpPipelineLogger {
  9. /**
  10. * The log level threshold for what logs will be logged.
  11. */
  12. minimumLogLevel: HttpPipelineLogLevel;
  13. /**
  14. * Log the provided message.
  15. * @param logLevel The HttpLogDetailLevel associated with this message.
  16. * @param message The message to log.
  17. */
  18. log(logLevel: HttpPipelineLogLevel, message: string): void;
  19. }
  20. /**
  21. * A HttpPipelineLogger that will send its logs to the console.
  22. */
  23. export class ConsoleHttpPipelineLogger implements HttpPipelineLogger {
  24. /**
  25. * Create a new ConsoleHttpPipelineLogger.
  26. * @param minimumLogLevel The log level threshold for what logs will be logged.
  27. */
  28. constructor(public minimumLogLevel: HttpPipelineLogLevel) {
  29. }
  30. /**
  31. * Log the provided message.
  32. * @param logLevel The HttpLogDetailLevel associated with this message.
  33. * @param message The message to log.
  34. */
  35. log(logLevel: HttpPipelineLogLevel, message: string): void {
  36. const logMessage = `${HttpPipelineLogLevel[logLevel]}: ${message}`;
  37. switch (logLevel) {
  38. case HttpPipelineLogLevel.ERROR:
  39. console.error(logMessage);
  40. break;
  41. case HttpPipelineLogLevel.WARNING:
  42. console.warn(logMessage);
  43. break;
  44. case HttpPipelineLogLevel.INFO:
  45. console.log(logMessage);
  46. break;
  47. }
  48. }
  49. }