diff --git a/index.d.ts b/index.d.ts index 7ea6d76ba1..25c4f51ff7 100644 --- a/index.d.ts +++ b/index.d.ts @@ -6,7 +6,7 @@ import { EventEmitter } from 'events' import { Readable } from 'stream'; import { Socket } from 'net'; import { IncomingMessage, ServerResponse } from 'http'; -import { EggLogger, EggLoggers, LoggerLevel as EggLoggerLevel, EggContextLogger } from 'egg-logger'; +import { EggLogger, EggLoggers, LoggerLevel as EggLoggerLevel, EggLoggersOptions, EggLoggerOptions, EggContextLogger } from 'egg-logger'; import { HttpClient, RequestOptions2 as RequestOptions } from 'urllib'; import { EggCoreBase, @@ -210,6 +210,16 @@ declare module 'egg' { type IgnoreItem = string | RegExp | ((ctx: Context) => boolean); type IgnoreOrMatch = IgnoreItem | IgnoreItem[]; + /** logger config of egg */ + export interface EggLoggerConfig extends RemoveSpecProp { + /** custom config of coreLogger */ + coreLogger?: Partial; + /** allow debug log at prod, defaults to true */ + allowDebugAtProd?: boolean; + /** disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`. */ + disableConsoleAfterReady?: boolean; + } + /** Custom Loader Configuration */ export interface CustomLoaderConfig extends RemoveSpecProp { /** @@ -312,21 +322,11 @@ declare module 'egg' { * @property {Object} coreLogger - custom config of coreLogger * @property {Boolean} allowDebugAtProd - allow debug log at prod, defaults to true */ - logger: { - dir: string; - encoding: string; - env: EggEnvType; - level: LoggerLevel; - consoleLevel: LoggerLevel; - disableConsoleAfterReady: boolean; - outputJSON: boolean; - buffer: boolean; - appLogName: string; - coreLogName: string; - agentLogName: string; - errorLogName: string; - coreLogger: any; - allowDebugAtProd: boolean; + logger: EggLoggerConfig; + + /** custom logger of egg */ + customLogger: { + [key: string]: EggLoggerOptions; }; /** Configuration of httpclient in egg. */ diff --git a/test/fixtures/apps/app-ts-type-check/normal.ts b/test/fixtures/apps/app-ts-type-check/normal.ts index f2e999f954..ba4b8ccbf7 100644 --- a/test/fixtures/apps/app-ts-type-check/normal.ts +++ b/test/fixtures/apps/app-ts-type-check/normal.ts @@ -138,6 +138,36 @@ config.httpclient = { proxy: 'http://127.0.0.1:8888' } config.httpclient = httpclientOption; +config.logger = { + dir: 'logs', + encoding: 'utf8', + env: 'prod', + level: 'INFO', + consoleLevel: 'INFO', + disableConsoleAfterReady: true, + outputJSON: false, + buffer: true, + appLogName: `app-web.log`, + coreLogName: 'egg-web.log', + agentLogName: 'egg-agent.log', + errorLogName: 'common-error.log', + allowDebugAtProd: false, + coreLogger: {}, +}; +config.customLogger = { + myLogger: { + file: './test.log', + jsonFile: './test.json', + formatter: (meta: any) => (meta.date + ' ' + meta.level + ' ' + meta.pid + ' ' + meta.message), + contextFormatter: meta => JSON.stringify(meta), + buffer: true, + eol: '\r\n', + }, + + otherLogger: { + file: './other.log', + } +} // partial config const config2 = {} as PowerPartial; @@ -155,6 +185,16 @@ config2.customLoader = { config2.security = { csrf: false, } +config2.logger = { + dir: 'logs', + encoding: 'utf8', + env: 'prod', + level: 'INFO', + coreLogger: { + file: './test.log', + level: 'ALL', + } +} // singleton const redis = {} as Singleton<{ test(): void; }>;