zhusiqing пре 4 година
родитељ
комит
89e2f0c998
3 измењених фајлова са 42 додато и 5 уклоњено
  1. 7 1
      src/app.ts
  2. 1 1
      src/config.ts
  3. 34 3
      src/utils/logger.ts

+ 7 - 1
src/app.ts

@@ -8,7 +8,7 @@ import bodyParser from 'koa-bodyparser';
 // 部分安全相关
 import helmet from 'koa-helmet';
 // 静态服务
-import koaStatic from 'koa-static'
+import koaStatic from 'koa-static';
 // 请求转发
 import koaProxy from 'koa-proxies';
 import controllers from './controllers';
@@ -20,6 +20,8 @@ import responseMiddleware from './middlewares/response';
 import sessionMiddleware from './middlewares/session';
 import authMiddleware from './middlewares/auth';
 
+import { loggerInstance } from './utils/logger';
+
 const app = new Koa<DefaultState, Context>();
 
 // 为了获取到真实的ip
@@ -58,6 +60,10 @@ app.use(koaProxy('/proxy', {
 
 app.on('error', (err, ctx: Context) => {
   ctx.$response(err, 'error', false);
+  const errMsg: string = err.message || '服务出错';
+  console.log(errMsg);
+  console.log(ctx);
+  loggerInstance(ctx).error(errMsg)
 });
 
 // api 路由

+ 1 - 1
src/config.ts

@@ -13,7 +13,7 @@ export = {
     // 单位时间内,秒
     time: 60,
     // 请求次数
-    times: 30
+    times: 3
   },
   // logs
   logs: {

+ 34 - 3
src/utils/logger.ts

@@ -1,6 +1,6 @@
 import log4js from 'log4js';
 import path from 'path';
-
+import { Context } from 'koa';
 import config from '../config';
 
 // 输出配置
@@ -37,7 +37,7 @@ req: ${JSON.stringify(Object.assign(client, commonInfo))}`;
   return text;
 };
 // 日志级别
-const methods = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'mark'];
+const methods: string[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'mark'];
 
 // 默认配置
 const defaultConfig = {
@@ -114,7 +114,38 @@ log4js.configure({
   pm2InstanceVar: 'INSTANCE_ID'
 });
 // 初始化log4js
-export const logger = log4js.getLogger('log');
+const logger = log4js.getLogger('log');
+
+interface logFn {
+  (message: any, ...args: any[]): void;
+}
+interface interfaceLog {
+  trace: logFn
+  debug: logFn
+  info: logFn
+  warn: logFn
+  error: logFn
+  fatal: logFn
+  mark: logFn
+}
+
+export const loggerInstance = (ctx: Context): interfaceLog => {
+  const $log: interfaceLog = {
+    trace: () => {},
+    debug: () => {},
+    info: () => {},
+    warn: () => {},
+    error: () => {},
+    fatal: () => {},
+    mark: () => {}
+  };
+  methods.map(el => {
+    $log[el] = (message) => {
+      logger[el](output(ctx, message, { serverIp }));
+    };
+  });
+  return $log;
+}
 
 export const middlewareLog = () => {
   // koa上下文存放的log输出方法