index.d.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. interface ILoggerLevel {
  2. ALL: number;
  3. DEBUG: number;
  4. INFO: number;
  5. WARN: number;
  6. ERROR: number;
  7. NONE: number;
  8. }
  9. export const levels: ILoggerLevel;
  10. export type LoggerLevel = keyof ILoggerLevel;
  11. export interface LoggerOptions {
  12. level?: LoggerLevel;
  13. encoding?: string;
  14. consoleLevel?: LoggerLevel;
  15. allowDebugAtProd?: boolean;
  16. }
  17. export interface EggLoggerOptions extends LoggerOptions {
  18. file: string;
  19. formatter?: (meta?: object) => string;
  20. contextFormatter?: (meta?: object) => string;
  21. jsonFile?: string;
  22. outputJSON?: boolean;
  23. buffer?: boolean;
  24. eol?: string;
  25. concentrateError?: 'duplicate' | 'redirect' | 'ignore';
  26. }
  27. export class Logger<T extends LoggerOptions = LoggerOptions> extends Map<string, Transport> {
  28. constructor(options: T);
  29. /**
  30. * disable a transport
  31. * @param {String} name - transport name
  32. */
  33. disable(name: string): void;
  34. /**
  35. * enable a transport
  36. * @param {String} name - transport name
  37. */
  38. enable(name: string): void;
  39. /**
  40. * Send log to all transports.
  41. * It's proxy to {@link Transport}'s log method.'
  42. * @param {String} level - log level
  43. * @param {Array} args - log arguments
  44. * @param {Object} meta - log meta
  45. */
  46. log(level: LoggerLevel, args: any[], meta: object): void;
  47. /**
  48. * write raw log to all transports
  49. * @param {String} msg - log message
  50. */
  51. write(msg: string): void;
  52. /**
  53. * Redirect specify level log to the other logger
  54. * @param {String} level - log level
  55. * @param {Logger} logger - target logger instance
  56. */
  57. redirect(level: LoggerLevel, logger: Logger): void;
  58. /**
  59. * Un-redirect specify level log
  60. * @param {String} level - log level
  61. */
  62. unredirect(level: LoggerLevel): void;
  63. /**
  64. * Duplicate specify level log to the other logger
  65. * @param {String} level - log level
  66. * @param {Logger} logger - target logger instance
  67. * @param {Object} [options] - { excludes: [] }
  68. */
  69. duplicate(level: LoggerLevel, logger: Logger, options?: { excludes?: string[] }): void;
  70. /**
  71. * Un-duplicate specify level log
  72. * @param {String} level - log level
  73. */
  74. unduplicate(level: LoggerLevel): void;
  75. /**
  76. * Reload all transports
  77. */
  78. reload(): void;
  79. /**
  80. * End all transports
  81. */
  82. close(): void;
  83. error(msg: any, ...args: any[]): void;
  84. warn(msg: any, ...args: any[]): void;
  85. info(msg: any, ...args: any[]): void;
  86. debug(msg: any, ...args: any[]): void;
  87. }
  88. export class EggLogger extends Logger<EggLoggerOptions> {
  89. level: LoggerLevel;
  90. consoleLevel: LoggerLevel;
  91. }
  92. export class EggErrorLogger extends Logger {}
  93. export class EggConsoleLogger extends Logger {}
  94. export class EggCustomLogger extends Logger {}
  95. export class EggContextLogger {
  96. constructor(ctx: any, logger: Logger);
  97. readonly paddingMessage: string;
  98. write(msg: string): void;
  99. error(msg: any, ...args: any[]): void;
  100. warn(msg: any, ...args: any[]): void;
  101. info(msg: any, ...args: any[]): void;
  102. debug(msg: any, ...args: any[]): void;
  103. }
  104. export interface EggLoggersOptions {
  105. env?: string;
  106. type: string;
  107. dir: string;
  108. encoding?: string;
  109. level?: LoggerLevel;
  110. consoleLevel?: LoggerLevel;
  111. outputJSON?: boolean;
  112. buffer?: boolean;
  113. appLogName: string;
  114. coreLogName: string;
  115. agentLogName: string;
  116. errorLogName: string;
  117. eol?: string;
  118. // whether write error logger to common-error.log, `duplicate` / `redirect` / `ignore`, default to `duplicate`
  119. concentrateError?: 'duplicate' | 'redirect' | 'ignore';
  120. }
  121. export interface EggCustomLoggerOptions {
  122. // custom logger name
  123. [name: string]: EggLoggerOptions;
  124. }
  125. export class EggLoggers extends Map<string, Logger> {
  126. constructor(options: { logger: EggLoggersOptions, customLogger?: EggCustomLoggerOptions });
  127. /**
  128. * Disable console logger
  129. */
  130. disableConsole(): void;
  131. /**
  132. * reload all logger
  133. */
  134. reload(): void;
  135. /**
  136. * Add a logger
  137. * @param {String} name - logger name
  138. * @param {Logger} logger - Logger instance
  139. */
  140. set(name: string, logger: Logger): this;
  141. [key: string]: any;
  142. }
  143. export interface TransportOptions {
  144. level?: LoggerLevel;
  145. formatter?: (meta?: object) => string;
  146. contextFormatter?: (meta?: object) => string;
  147. json?: boolean;
  148. encoding?: string;
  149. eol?: string;
  150. }
  151. export interface FileTransportOptions extends TransportOptions {
  152. file: string;
  153. }
  154. export interface FileBufferTransportOptions extends FileTransportOptions {
  155. flushInterval?: number;
  156. maxBufferLength?: number;
  157. }
  158. export interface ConsoleTransportOptions extends TransportOptions {
  159. stderrLevel?: string;
  160. }
  161. export class Transport<T extends TransportOptions = TransportOptions> {
  162. constructor(options?: T);
  163. readonly enabled: boolean;
  164. level: LoggerLevel;
  165. enable(): void;
  166. shouldLog(level: LoggerLevel): boolean;
  167. log(level: LoggerLevel, args: any[], meta: object): void;
  168. reload(): void;
  169. close(): void;
  170. end(): void;
  171. }
  172. export class FileTransport extends Transport<FileTransportOptions> {}
  173. export class FileBufferTransport extends Transport<FileBufferTransportOptions> {
  174. flush(): void;
  175. }
  176. export class ConsoleTransport extends Transport<ConsoleTransportOptions> {}