log.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { Emitter } from '../../../base/common/event.js';
  2. import { Disposable } from '../../../base/common/lifecycle.js';
  3. import { createDecorator } from '../../instantiation/common/instantiation.js';
  4. export const ILogService = createDecorator('logService');
  5. export var LogLevel;
  6. (function (LogLevel) {
  7. LogLevel[LogLevel["Trace"] = 0] = "Trace";
  8. LogLevel[LogLevel["Debug"] = 1] = "Debug";
  9. LogLevel[LogLevel["Info"] = 2] = "Info";
  10. LogLevel[LogLevel["Warning"] = 3] = "Warning";
  11. LogLevel[LogLevel["Error"] = 4] = "Error";
  12. LogLevel[LogLevel["Critical"] = 5] = "Critical";
  13. LogLevel[LogLevel["Off"] = 6] = "Off";
  14. })(LogLevel || (LogLevel = {}));
  15. export const DEFAULT_LOG_LEVEL = LogLevel.Info;
  16. export class AbstractLogger extends Disposable {
  17. constructor() {
  18. super(...arguments);
  19. this.level = DEFAULT_LOG_LEVEL;
  20. this._onDidChangeLogLevel = this._register(new Emitter());
  21. }
  22. setLevel(level) {
  23. if (this.level !== level) {
  24. this.level = level;
  25. this._onDidChangeLogLevel.fire(this.level);
  26. }
  27. }
  28. getLevel() {
  29. return this.level;
  30. }
  31. }
  32. export class ConsoleLogger extends AbstractLogger {
  33. constructor(logLevel = DEFAULT_LOG_LEVEL) {
  34. super();
  35. this.setLevel(logLevel);
  36. }
  37. trace(message, ...args) {
  38. if (this.getLevel() <= LogLevel.Trace) {
  39. console.log('%cTRACE', 'color: #888', message, ...args);
  40. }
  41. }
  42. debug(message, ...args) {
  43. if (this.getLevel() <= LogLevel.Debug) {
  44. console.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);
  45. }
  46. }
  47. info(message, ...args) {
  48. if (this.getLevel() <= LogLevel.Info) {
  49. console.log('%c INFO', 'color: #33f', message, ...args);
  50. }
  51. }
  52. error(message, ...args) {
  53. if (this.getLevel() <= LogLevel.Error) {
  54. console.log('%c ERR', 'color: #f33', message, ...args);
  55. }
  56. }
  57. dispose() {
  58. // noop
  59. }
  60. }
  61. export class LogService extends Disposable {
  62. constructor(logger) {
  63. super();
  64. this.logger = logger;
  65. this._register(logger);
  66. }
  67. getLevel() {
  68. return this.logger.getLevel();
  69. }
  70. trace(message, ...args) {
  71. this.logger.trace(message, ...args);
  72. }
  73. debug(message, ...args) {
  74. this.logger.debug(message, ...args);
  75. }
  76. info(message, ...args) {
  77. this.logger.info(message, ...args);
  78. }
  79. error(message, ...args) {
  80. this.logger.error(message, ...args);
  81. }
  82. }