Parcourir la source

时区东八,上报node 状态。

hl il y a 11 mois
Parent
commit
6d37eefdae
6 fichiers modifiés avec 98 ajouts et 11 suppressions
  1. 41 0
      package-lock.json
  2. 2 0
      package.json
  3. 13 1
      src/Interval.js
  4. 1 1
      src/config.js
  5. 22 5
      src/utils/logger.js
  6. 19 4
      src/web.js

+ 41 - 0
package-lock.json

@@ -10,10 +10,23 @@
       "license": "ISC",
       "dependencies": {
         "axios": "^1.6.7",
+        "date-fns": "^2.30.0",
+        "date-fns-tz": "^2.0.1",
         "express": "^4.18.3",
         "log4js": "^6.9.1"
       }
     },
+    "node_modules/@babel/runtime": {
+      "version": "7.24.1",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
+      "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
     "node_modules/accepts": {
       "version": "1.3.8",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -151,6 +164,29 @@
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
     },
+    "node_modules/date-fns": {
+      "version": "2.30.0",
+      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+      "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+      "dependencies": {
+        "@babel/runtime": "^7.21.0"
+      },
+      "engines": {
+        "node": ">=0.11"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/date-fns"
+      }
+    },
+    "node_modules/date-fns-tz": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.1.tgz",
+      "integrity": "sha512-fJCG3Pwx8HUoLhkepdsP7Z5RsucUi+ZBOxyM5d0ZZ6c4SdYustq0VMmOu6Wf7bli+yS/Jwp91TOCqn9jMcVrUA==",
+      "peerDependencies": {
+        "date-fns": "2.x"
+      }
+    },
     "node_modules/date-format": {
       "version": "4.0.14",
       "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
@@ -708,6 +744,11 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+    },
     "node_modules/rfdc": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",

+ 2 - 0
package.json

@@ -11,6 +11,8 @@
   "license": "ISC",
   "dependencies": {
     "axios": "^1.6.7",
+    "date-fns": "^2.30.0",
+    "date-fns-tz": "^2.0.1",
     "express": "^4.18.3",
     "log4js": "^6.9.1"
   }

+ 13 - 1
src/Interval.js

@@ -1,19 +1,31 @@
 const robot = require('./robot')
- const { logger, fileLogger }  = require("./utils/logger");
+const web = require('./web')
+const { logger, fileLogger }  = require("./utils/logger");
 const http = require("./utils/http");
 const {getRustConfig} = require('./config')
 const constants = require("constants");
 
 
+
 /*******
  * 定时任务
  * **** */
 function init() {
+    reportNodeStatus()
     reportDel()
     reportStatus()
     reportAmount()
     logger.info('--定时任务 启动');
 }
+function reportNodeStatus() {
+    const intervalInMilliseconds = 5000;
+    setInterval(() => {
+        // logger.info('当前1',robot.appMap);
+        web.robotNodeStatus()
+    }, intervalInMilliseconds);
+}
+
+
 
 //定时清理机器人
 function reportDel() {

+ 1 - 1
src/config.js

@@ -29,7 +29,7 @@ function getConfig() {
         rustConfig = config.rustConfig
 
         // 现在可以访问 config 对象中的数据了
-        logger.info('配置文件内容:', rustConfig);
+        logger.info('配置文件内容:',rawContent);
     } catch (error) {
         // 如果有错误发生,比如文件不存在或者 JSON 格式不正确,打印错误信息
         logger.error('读取配置文件时出错:', error);

+ 22 - 5
src/utils/logger.js

@@ -1,4 +1,19 @@
 const log4js = require('log4js')
+const {format} = require('date-fns');
+const {zonedTimeToUtc, utcToZonedTime} = require('date-fns-tz');
+const EASTERN_EIGHT_ZONE = 'Asia/Shanghai';
+
+
+log4js.addLayout('customLayout', (config) => {
+    return (logEvent) => {
+        // 转换为东八区时间
+        const zonedDate = utcToZonedTime(logEvent.startTime, EASTERN_EIGHT_ZONE);
+        // 格式化时间
+        const formattedDate = format(zonedDate, 'yyyy-MM-dd HH:mm:ss.SSS', { timeZone: EASTERN_EIGHT_ZONE });
+        return `${formattedDate} ${logEvent.level} [${logEvent.categoryName}] ${logEvent.data}`;
+    };
+});
+
 // 配置 log4js
 log4js.configure({
     //输出格式
@@ -11,15 +26,17 @@ log4js.configure({
             numBackups: 30, // 保留30个备份文件
             keepFileExt: true, // 保持文件扩展名
             layout: {
-                type: 'pattern',
-                pattern: '[%d] [%p] %c - %m', // 自定义日志格式
+                // type: 'pattern',
+                type: 'customLayout',
+                pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`,
             }
         },
         console: {
             type: 'console',
             layout: {
-                type: 'pattern',
-                pattern: '[%d] [%p] %c - %m', // 自定义日志格式
+                // type: 'pattern',
+                type: 'customLayout',
+                pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`,
             }
         }
     },
@@ -29,7 +46,7 @@ log4js.configure({
     categories: {
         //控制台输出对象
         default: {
-            appenders: ['console','nodeFile'],
+            appenders: ['console', 'nodeFile'],
             level: 'TRACE'
         },
         // //文件输出对象

+ 19 - 4
src/web.js

@@ -1,6 +1,7 @@
 const express = require('express');
 const robot = require('./robot')
-const config = require('./config')
+const {getRustConfig} = require('./config')
+const http = require("./utils/http");
 const file = require('./utils/file')
 const {logger, fileLogger} = require("./utils/logger");
 const {spawn, exec, fork, execSync} = require("child_process");
@@ -38,12 +39,12 @@ function init() {
         // 拼接字符串得到 YYYY-MM-DD 格式
         var logName = `${year}-${month}-${day}`;
 
-        var f = config.getRustConfig().logPath + "/" + logName + ".log"
+        var f = getRustConfig().logPath + "/" + logName + ".log"
         var array = [];
         if (file.checkFilePath(f)) {
             const directoryPath = path.resolve(f);
             array = file.readLastNLines(directoryPath, n)
-        }else{
+        } else {
             logger.info('日志文件不存在:' + f);
         }
 
@@ -75,6 +76,19 @@ function init() {
     logger.info('--web 启动');
 }
 
+// node-已上线-上报
+function robotNodeStatus() {
+    var config = getRustConfig()
+    http.request_post(`${config.baseUrl}/report/beOnline`, {},{...config.headers}).then((data) => {
+        // logger.info('??', data);
+        logger.info('node 在线-上报成功!',data);
+    }).catch((error) => {
+        logger.error(`node 在线!-上报失败: ${error.message}`); // 处理可能发生的错误
+    });
+}
+
+
+
 
 function isOK(req, res) {
     res.send({'code': 200, 'data': "null", "message": "SUCCESS"});
@@ -82,5 +96,6 @@ function isOK(req, res) {
 
 // 日志读取操作
 module.exports = {
-    init
+    init,
+    robotNodeStatus
 };