Bladeren bron

fix: 修复日志系统,将错误日志和请求日志分开

zhusiqing 3 jaren geleden
bovenliggende
commit
73165a0e16
7 gewijzigde bestanden met toevoegingen van 629 en 52 verwijderingen
  1. 3 1
      README.md
  2. 6 1
      package.json
  3. 23 22
      src/app.ts
  4. 22 0
      src/middlewares/index.ts
  5. 2 1
      src/plugins/index.ts
  6. 8 3
      src/plugins/logger.ts
  7. 565 24
      yarn.lock

+ 3 - 1
README.md

@@ -46,6 +46,8 @@
 - [x] 开发环境热更新和生产环境pm2部署
 - [x] eslint代码风格规范化
 - [x] 大文件切片上传
+- [x] 单个服务的Dockerfile完成
+- [ ] mysql,nginx,mongo,redis等相对应的docker
 - [ ] mysql插件
 - [ ] mongo插件
 - [ ] 邮件系统插件
@@ -54,7 +56,7 @@
 - [ ] 加密服务的完善(目前只有针对id的加解密,后续拓展MD5、hash等加密方式)
 - [ ] websocket服务完善
 - [ ] 项目结构和代码优化调整
-- [ ] docker化?
+- [ ] 定时任务
 
 ## 安装
 

+ 6 - 1
package.json

@@ -33,11 +33,13 @@
   },
   "dependencies": {
     "@koa/multer": "^3.0.0",
+    "axios": "^0.23.0",
     "consola": "^2.15.0",
     "cross-env": "^7.0.2",
     "fs-extra": "^10.0.0",
     "koa": "^2.13.0",
     "koa-bodyparser": "^4.3.0",
+    "koa-compose": "^4.1.0",
     "koa-helmet": "^5.2.0",
     "koa-proxies": "^0.11.0",
     "koa-router": "^9.4.0",
@@ -87,6 +89,9 @@
     }
   },
   "lint-staged": {
-    "*.{vue,js,ts}": ["eslint --fix", "git add"]
+    "*.{vue,js,ts}": [
+      "eslint --fix",
+      "git add"
+    ]
   }
 }

+ 23 - 22
src/app.ts

@@ -15,14 +15,14 @@ import koaProxy from 'koa-proxies';
 // 导入配置文件
 import config from '@config';
 // 导入中间件
-import redisMiddleware from './middlewares/redis';
-import limitMiddleware from './middlewares/limit';
-import logsMiddleware from './middlewares/logs';
-import responseMiddleware from './middlewares/response';
-import sessionMiddleware from './middlewares/session';
-// import authMiddleware from './middlewares/auth';
-import localDbMiddleware from './middlewares/localDb';
-
+// import redisMiddleware from './middlewares/redis';
+// import limitMiddleware from './middlewares/limit';
+// import logsMiddleware from './middlewares/logs';
+// import responseMiddleware from './middlewares/response';
+// import sessionMiddleware from './middlewares/session';
+// // import authMiddleware from './middlewares/auth';
+// import localDbMiddleware from './middlewares/localDb';
+import middlewares from './middlewares';
 import server from '@utils/server';
 import Plugins from '@/plugins';
 
@@ -39,25 +39,26 @@ app.use(helmet());
 // 静态资源
 app.use(koaStatic(path.join(__dirname, config.staticPath)));
 // 返回体格式
-app.use(responseMiddleware());
+// app.use(responseMiddleware());
 // post params解析
 app.use(bodyParser({
   ...config.bodyParser
 }));
+app.use(middlewares(app, plugins));
 // 日志
-app.use(logsMiddleware(plugins.logger.middleware));
+// app.use(logsMiddleware(plugins.logger.middleware));
 
-// 本地嵌入式数据库
-app.use(localDbMiddleware(plugins.db));
-// redis
-app.use(redisMiddleware({
-  redis: plugins.redis,
-  memoryCache: plugins.memoryCache
-}));
-// 限流
-app.use(limitMiddleware());
-// session
-app.use(sessionMiddleware(app));
+// // 本地嵌入式数据库
+// app.use(localDbMiddleware(plugins.db));
+// // redis
+// app.use(redisMiddleware({
+//   redis: plugins.redis,
+//   memoryCache: plugins.memoryCache
+// }));
+// // 限流
+// app.use(limitMiddleware());
+// // session
+// app.use(sessionMiddleware(app));
 // auth
 // app.use(authMiddleware())
 
@@ -66,7 +67,7 @@ const { run, ...proxyOptions } = config.proxy;
 if (run) {
   app.use(koaProxy('/proxy', { ...proxyOptions }));
 }
-
+console.log(plugins.logger);
 app.on('error', (err, ctx: Context) => {
   ctx.$response(err, 'error', false);
   const errMsg: string = err.message || '服务出错';

+ 22 - 0
src/middlewares/index.ts

@@ -0,0 +1,22 @@
+import compose from 'koa-compose';
+import redisMiddleware from './redis';
+import limitMiddleware from './limit';
+import logsMiddleware from './logs';
+import responseMiddleware from './response';
+import sessionMiddleware from './session';
+// import authMiddleware from './auth';
+import localDbMiddleware from './localDb';
+
+export default (app, plugins) => {
+  return compose([
+    responseMiddleware(),
+    logsMiddleware(plugins.logger.middleware),
+    localDbMiddleware(plugins.db),
+    redisMiddleware({
+      redis: plugins.redis,
+      memoryCache: plugins.memoryCache
+    }),
+    limitMiddleware(),
+    sessionMiddleware(app)
+  ]);
+};

+ 2 - 1
src/plugins/index.ts

@@ -3,7 +3,7 @@ import config from '@config';
 import RedisPlugin from '@/plugins/redis';
 import MemoryCachePlugin from '@/plugins/memoryCache';
 import LocalDbPlugin from '@/plugins/localDb';
-import MyLogger, { InterfaceLog } from '@/plugins/logger';
+import MyLogger, { InterfaceLog, formatLog } from '@/plugins/logger';
 
 export type Redis = RedisPlugin
 export type MemoryCache = MemoryCachePlugin
@@ -46,6 +46,7 @@ export default () => {
   const memoryCache = new MemoryCachePlugin();
   const localDb = new LocalDbPlugin(localDbOption);
   logger.middleware = logger.middleware.bind(logger);
+  logger.formatLog = formatLog.bind(logger);
   return {
     redis,
     memoryCache,

+ 8 - 3
src/plugins/logger.ts

@@ -145,7 +145,7 @@ export default class MyLogger {
     //   }
     // }
     const appenders: InterfaceAppenders = {
-      log: {
+      access: {
         // 按日期进行输出log
         type: 'dateFile',
         // 路径和文件名
@@ -192,7 +192,12 @@ export default class MyLogger {
      */
     const categories = {
       default: {
-        appenders: Object.keys(appenders),
+        // appenders: Object.keys(appenders),
+        appenders: ['access'],
+        level: appLogLevel
+      },
+      error: {
+        appenders: ['error'],
         level: appLogLevel
       }
     };
@@ -205,7 +210,7 @@ export default class MyLogger {
       pm2InstanceVar: 'INSTANCE_ID'
     });
     // 初始化log4js
-    logger = log4js.getLogger('log');
+    logger = log4js.getLogger();
     loggerErr = log4js.getLogger('error');
     this.logger = logger;
     this.loggerErr = loggerErr;

File diff suppressed because it is too large
+ 565 - 24
yarn.lock


Some files were not shown because too many files changed in this diff