|
@@ -71,8 +71,9 @@ req: ${JSON.stringify(Object.assign(client, newCommonInfo))}`;
|
|
|
};
|
|
|
|
|
|
// 日志级别
|
|
|
-const methods: string[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'mark'];
|
|
|
-
|
|
|
+// const methods: string[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'mark'];
|
|
|
+const methodsAcc: string[] = ['trace', 'debug', 'info', 'warn'];
|
|
|
+const methodsErr: string[] = ['error', 'fatal', 'mark'];
|
|
|
// 默认配置
|
|
|
const defaultConfig = {
|
|
|
logLevel: 'debug', // 日志级别
|
|
@@ -80,6 +81,36 @@ const defaultConfig = {
|
|
|
env: 'development' // 指定当前环境,当开发时控制台也输出
|
|
|
};
|
|
|
|
|
|
+let logger: Logger = {} as Logger;
|
|
|
+let loggerErr: Logger = {} as Logger;
|
|
|
+
|
|
|
+export function formatLog(
|
|
|
+ type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ message: string ,
|
|
|
+): void
|
|
|
+export function formatLog(
|
|
|
+ type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ message: string ,
|
|
|
+ ctx?: Context,
|
|
|
+ options?: { [key: string]: string|number }): void
|
|
|
+export function formatLog(
|
|
|
+ type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ message: string ,
|
|
|
+ ctx?: Context,
|
|
|
+ options?: { [key: string]: string|number }): void {
|
|
|
+ let log: Logger;
|
|
|
+ if (methodsErr.includes(type)) {
|
|
|
+ log = loggerErr;
|
|
|
+ } else {
|
|
|
+ log = logger;
|
|
|
+ }
|
|
|
+ if (ctx) {
|
|
|
+ log[type](formatOutputHandle(ctx, message, Object.assign({ ip: ctx.ip }, options)));
|
|
|
+ } else {
|
|
|
+ log[type](message);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
export default class MyLogger {
|
|
|
// log配置
|
|
|
logConfig = Object.assign({}, defaultConfig, config.logs);
|
|
@@ -91,6 +122,7 @@ export default class MyLogger {
|
|
|
isDev = false
|
|
|
// log4js实例
|
|
|
logger: Logger = {} as Logger
|
|
|
+ loggerErr: Logger = {} as Logger
|
|
|
constructor() {
|
|
|
this.init();
|
|
|
}
|
|
@@ -117,7 +149,20 @@ export default class MyLogger {
|
|
|
// 按日期进行输出log
|
|
|
type: 'dateFile',
|
|
|
// 路径和文件名
|
|
|
- filename: `${dir}/z`,
|
|
|
+ filename: `${dir}/access/z-acc`,
|
|
|
+ pattern: 'yyyy-MM-dd.log',
|
|
|
+ alwaysIncludePattern: true,
|
|
|
+ // 日志输出格式
|
|
|
+ layout: {
|
|
|
+ type: 'pattern',
|
|
|
+ pattern: '[%d{yyyy-MM-dd hh:mm:ss}] [%p] %c %m%n'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: {
|
|
|
+ // 按日期进行输出log
|
|
|
+ type: 'dateFile',
|
|
|
+ // 路径和文件名
|
|
|
+ filename: `${dir}/error/z-err`,
|
|
|
pattern: 'yyyy-MM-dd.log',
|
|
|
alwaysIncludePattern: true,
|
|
|
// 日志输出格式
|
|
@@ -160,7 +205,10 @@ export default class MyLogger {
|
|
|
pm2InstanceVar: 'INSTANCE_ID'
|
|
|
});
|
|
|
// 初始化log4js
|
|
|
- this.logger = log4js.getLogger('log');
|
|
|
+ logger = log4js.getLogger('log');
|
|
|
+ loggerErr = log4js.getLogger('error');
|
|
|
+ this.logger = logger;
|
|
|
+ this.loggerErr = loggerErr;
|
|
|
}
|
|
|
middleware(ctx: Context): InterfaceLog {
|
|
|
const $log: InterfaceLog = {
|
|
@@ -172,34 +220,51 @@ export default class MyLogger {
|
|
|
fatal: () => {},
|
|
|
mark: () => {}
|
|
|
};
|
|
|
- methods.map(el => {
|
|
|
+ methodsAcc.map(el => {
|
|
|
$log[el] = (message, options?: { [key: string]: string }) => {
|
|
|
this.logger[el](formatOutputHandle(ctx, message, Object.assign({ ip: ctx.ip }, options)));
|
|
|
};
|
|
|
});
|
|
|
+ methodsErr.map(el => {
|
|
|
+ $log[el] = (message, options?: { [key: string]: string }) => {
|
|
|
+ this.loggerErr[el](formatOutputHandle(
|
|
|
+ ctx,
|
|
|
+ message,
|
|
|
+ Object.assign({ ip: ctx.ip },
|
|
|
+ options
|
|
|
+ )));
|
|
|
+ };
|
|
|
+ });
|
|
|
return $log;
|
|
|
}
|
|
|
- formatLog(
|
|
|
- this: MyLogger,
|
|
|
- type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
- message: string ,
|
|
|
- ): void
|
|
|
- formatLog(
|
|
|
- this: MyLogger,
|
|
|
- type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
- message: string ,
|
|
|
- ctx?: Context,
|
|
|
- options?: { [key: string]: string|number }): void
|
|
|
- formatLog(
|
|
|
- this: MyLogger,
|
|
|
- type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
- message: string ,
|
|
|
- ctx?: Context,
|
|
|
- options?: { [key: string]: string|number }): void {
|
|
|
- if (ctx) {
|
|
|
- this.logger[type](formatOutputHandle(ctx, message, Object.assign({ ip: ctx.ip }, options)));
|
|
|
- } else {
|
|
|
- this.logger[type](message);
|
|
|
- }
|
|
|
- }
|
|
|
+ formatLog
|
|
|
+ // formatLog(
|
|
|
+ // this: MyLogger,
|
|
|
+ // type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ // message: string ,
|
|
|
+ // ): void
|
|
|
+ // formatLog(
|
|
|
+ // this: MyLogger,
|
|
|
+ // type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ // message: string ,
|
|
|
+ // ctx?: Context,
|
|
|
+ // options?: { [key: string]: string|number }): void
|
|
|
+ // formatLog(
|
|
|
+ // this: MyLogger,
|
|
|
+ // type: 'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'mark',
|
|
|
+ // message: string ,
|
|
|
+ // ctx?: Context,
|
|
|
+ // options?: { [key: string]: string|number }): void {
|
|
|
+ // let log: Logger;
|
|
|
+ // if (methodsErr.includes(type)) {
|
|
|
+ // log = loggerErr;
|
|
|
+ // } else {
|
|
|
+ // log = logger;
|
|
|
+ // }
|
|
|
+ // if (ctx) {
|
|
|
+ // log[type](formatOutputHandle(ctx, message, Object.assign({ ip: ctx.ip }, options)));
|
|
|
+ // } else {
|
|
|
+ // log[type](message);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|