agora-foundation 3.6.1 → 3.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/logger/logger-impl.js +2 -2
- package/lib/logger/type.d.ts +1 -1
- package/lib/utilities/zip.js +5 -1
- package/lib/worker/handler/log-rotate.d.ts +2 -0
- package/lib/worker/handler/log-rotate.js +89 -0
- package/lib/worker/handler/log.d.ts +1 -1
- package/lib/worker/handler/log.js +12 -9
- package/lib/worker/interactor.d.ts +1 -1
- package/lib/worker/interactor.js +3 -4
- package/lib/worker/worker-factory.js +1 -1
- package/lib/worker/worker-installer.js +2 -2
- package/package.json +7 -5
|
@@ -32,8 +32,8 @@ var LoggerImpl = exports.LoggerImpl = /*#__PURE__*/function () {
|
|
|
32
32
|
var path = window.require('path');
|
|
33
33
|
var _window$require = window.require('@electron/remote'),
|
|
34
34
|
app = _window$require.app;
|
|
35
|
-
var
|
|
36
|
-
_logWorkerInteractor.addFsLogger(_label,
|
|
35
|
+
var logFolderPath = path.resolve(app.getPath('logs'), 'logs');
|
|
36
|
+
_logWorkerInteractor.addFsLogger(_label, logFolderPath);
|
|
37
37
|
} else {
|
|
38
38
|
this.warn('window.require is not present, logWorkerInteractor.addFsLogger cannot proceed');
|
|
39
39
|
}
|
package/lib/logger/type.d.ts
CHANGED
package/lib/utilities/zip.js
CHANGED
|
@@ -104,7 +104,11 @@ var zipDir = exports.zipDir = function zipDir(dirPath, filter) {
|
|
|
104
104
|
case 32:
|
|
105
105
|
_context.next = 34;
|
|
106
106
|
return zip.generateAsync({
|
|
107
|
-
type: 'blob'
|
|
107
|
+
type: 'blob',
|
|
108
|
+
compression: 'DEFLATE',
|
|
109
|
+
compressionOptions: {
|
|
110
|
+
level: 9
|
|
111
|
+
}
|
|
108
112
|
});
|
|
109
113
|
case 34:
|
|
110
114
|
blob = _context.sent;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createRotateTransport = void 0;
|
|
8
|
+
require("core-js/modules/es.array.concat.js");
|
|
9
|
+
require("core-js/modules/es.array.filter.js");
|
|
10
|
+
require("core-js/modules/es.array.for-each.js");
|
|
11
|
+
require("core-js/modules/es.array.join.js");
|
|
12
|
+
require("core-js/modules/es.array.slice.js");
|
|
13
|
+
require("core-js/modules/es.array.sort.js");
|
|
14
|
+
require("core-js/modules/es.object.to-string.js");
|
|
15
|
+
require("core-js/modules/es.regexp.constructor.js");
|
|
16
|
+
require("core-js/modules/es.regexp.dot-all.js");
|
|
17
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
18
|
+
require("core-js/modules/es.regexp.sticky.js");
|
|
19
|
+
require("core-js/modules/es.regexp.test.js");
|
|
20
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
21
|
+
require("core-js/modules/esnext.async-iterator.filter.js");
|
|
22
|
+
require("core-js/modules/esnext.async-iterator.for-each.js");
|
|
23
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
24
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
25
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
26
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
27
|
+
require("core-js/modules/web.timers.js");
|
|
28
|
+
var createRotateTransport = exports.createRotateTransport = function createRotateTransport(filenamePrefix, logFolderPath) {
|
|
29
|
+
require('winston-daily-rotate-file');
|
|
30
|
+
var winston = require('winston');
|
|
31
|
+
console.log('[worker] log rotate transport created:', filenamePrefix, logFolderPath);
|
|
32
|
+
var transport = new winston.transports.DailyRotateFile({
|
|
33
|
+
level: 'info',
|
|
34
|
+
frequency: '9999d',
|
|
35
|
+
dirname: logFolderPath,
|
|
36
|
+
filename: "".concat(filenamePrefix, "-%DATE%.log"),
|
|
37
|
+
datePattern: 'YYYYMMDDhhmmss',
|
|
38
|
+
maxSize: 1024 * 1024
|
|
39
|
+
});
|
|
40
|
+
transport.on('error', function (error) {
|
|
41
|
+
// log or handle errors here
|
|
42
|
+
console.error('[worker] winston transport error:', error);
|
|
43
|
+
});
|
|
44
|
+
transport.on('new', function (filename) {
|
|
45
|
+
console.log("[worker] winston transport new file created: ".concat(filename));
|
|
46
|
+
});
|
|
47
|
+
transport.on('rotate', function (oldFilename, newFilename) {
|
|
48
|
+
console.log("[worker] winston transport rotated: ".concat(oldFilename, " -> ").concat(newFilename));
|
|
49
|
+
clearLogFolder(logFolderPath, filenamePrefix);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// only keep the latest 5 log files
|
|
53
|
+
clearLogFolder(logFolderPath, filenamePrefix);
|
|
54
|
+
return transport;
|
|
55
|
+
};
|
|
56
|
+
var clearLogFolder = function clearLogFolder(logFolderPath, filenamePrefix) {
|
|
57
|
+
var fs = require('node:fs');
|
|
58
|
+
setTimeout(function () {
|
|
59
|
+
fs.readdir(logFolderPath, function (err, files) {
|
|
60
|
+
if (err) {
|
|
61
|
+
console.error("[worker] failed to read log folder: ".concat(logFolderPath), err);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
var sortedLogFileList = files.filter(function (file) {
|
|
65
|
+
return new RegExp("^".concat(filenamePrefix, "-\\d{14}\\.log")).test(file);
|
|
66
|
+
}).sort(function (a, b) {
|
|
67
|
+
return fs.statSync("".concat(logFolderPath, "/").concat(a)).mtime.getTime() - fs.statSync("".concat(logFolderPath, "/").concat(b)).mtime.getTime();
|
|
68
|
+
});
|
|
69
|
+
console.log("[worker] sorted log files: ".concat(sortedLogFileList.join(', '), ", count: ").concat(sortedLogFileList.length));
|
|
70
|
+
if (sortedLogFileList.length <= 5) {
|
|
71
|
+
return; // 不需要删除文件
|
|
72
|
+
}
|
|
73
|
+
var listToDelete = sortedLogFileList.slice(0, sortedLogFileList.length - 5);
|
|
74
|
+
|
|
75
|
+
// 判断如果超过5个文件,则删除最旧的文件
|
|
76
|
+
console.log("[worker] log files to delete: ".concat(listToDelete.join(', ')));
|
|
77
|
+
listToDelete.forEach(function (file) {
|
|
78
|
+
var oldFilename = "".concat(logFolderPath, "/").concat(file);
|
|
79
|
+
fs.unlink(oldFilename, function (err) {
|
|
80
|
+
if (err) {
|
|
81
|
+
console.error("[worker] failed to delete log file: ".concat(oldFilename), err);
|
|
82
|
+
} else {
|
|
83
|
+
console.log("[worker] successfully deleted log file: ".concat(oldFilename));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
};
|
|
@@ -10,6 +10,6 @@ export declare const writeLog: (self: WorkerContext, callId: number, log: Log) =
|
|
|
10
10
|
export declare const collectLogs: (self: WorkerContext, callId: number, labels: string[]) => Promise<void>;
|
|
11
11
|
export declare const deleteLogs: (self: WorkerContext, callId: number, labels: string[], lastId: number) => Promise<void>;
|
|
12
12
|
export declare const setMaxRecords: (self: WorkerContext, callId: number, max: number) => void;
|
|
13
|
-
export declare const addFsLogger: (self: WorkerContext, callId: number, label: string,
|
|
13
|
+
export declare const addFsLogger: (self: WorkerContext, callId: number, label: string, logFolderPath: string) => void;
|
|
14
14
|
export declare const writeLogsToDisk: (logs: LogSchema[]) => void;
|
|
15
15
|
export {};
|
|
@@ -41,6 +41,7 @@ var _reply = require("./reply");
|
|
|
41
41
|
var _raceCondition = require("../../utilities/race-condition");
|
|
42
42
|
var _jszip = _interopRequireDefault(require("jszip"));
|
|
43
43
|
var _env = require("../../utilities/env");
|
|
44
|
+
var _logRotate = require("./log-rotate");
|
|
44
45
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
45
46
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
46
47
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -259,20 +260,22 @@ var setMaxRecords = exports.setMaxRecords = function setMaxRecords(self, callId,
|
|
|
259
260
|
isSuccess: true
|
|
260
261
|
});
|
|
261
262
|
};
|
|
262
|
-
var addFsLogger = exports.addFsLogger = function addFsLogger(self, callId, label,
|
|
263
|
-
var winston =
|
|
263
|
+
var addFsLogger = exports.addFsLogger = function addFsLogger(self, callId, label, logFolderPath) {
|
|
264
|
+
var winston = require('winston');
|
|
264
265
|
if (!winston.loggers.has(label)) {
|
|
265
|
-
console.log("[worker] add fs logger, label: ".concat(label
|
|
266
|
+
console.log("[worker] add fs logger, label: ".concat(label));
|
|
266
267
|
winston.loggers.add(label, {
|
|
267
268
|
format: winston.format.printf(function (_ref4) {
|
|
268
269
|
var message = _ref4.message;
|
|
269
270
|
return "".concat(message);
|
|
270
271
|
}),
|
|
271
|
-
transports: [
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
272
|
+
transports: [
|
|
273
|
+
// new winston.transports.File({
|
|
274
|
+
// filename: logPath,
|
|
275
|
+
// maxFiles: 3,
|
|
276
|
+
// maxsize: 1048576, //1MB,
|
|
277
|
+
// }),
|
|
278
|
+
(0, _logRotate.createRotateTransport)("apaas-".concat(label), logFolderPath)]
|
|
276
279
|
});
|
|
277
280
|
}
|
|
278
281
|
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.ADD_FS_LOGGER, {
|
|
@@ -280,7 +283,7 @@ var addFsLogger = exports.addFsLogger = function addFsLogger(self, callId, label
|
|
|
280
283
|
});
|
|
281
284
|
};
|
|
282
285
|
var writeLogsToDisk = exports.writeLogsToDisk = function writeLogsToDisk(logs) {
|
|
283
|
-
var winston =
|
|
286
|
+
var winston = require('winston');
|
|
284
287
|
logs.forEach(function (log) {
|
|
285
288
|
winston.loggers.get(log.label).info(log.content);
|
|
286
289
|
});
|
|
@@ -3,7 +3,7 @@ export declare class WorkerInteractor implements LogWorkerInteractor {
|
|
|
3
3
|
private _eventEmitter;
|
|
4
4
|
private _logWorker;
|
|
5
5
|
constructor();
|
|
6
|
-
addFsLogger(label: string,
|
|
6
|
+
addFsLogger(label: string, logFolderPath: string): Promise<void>;
|
|
7
7
|
clearTempLogs(): Promise<void>;
|
|
8
8
|
setMaxRecords(maxRecords: number): Promise<void>;
|
|
9
9
|
sendLog(message: string, label: string): void;
|
package/lib/worker/interactor.js
CHANGED
|
@@ -10,7 +10,6 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
require("core-js/modules/es.error.cause.js");
|
|
12
12
|
require("core-js/modules/es.error.to-string.js");
|
|
13
|
-
require("core-js/modules/es.array.concat.js");
|
|
14
13
|
require("core-js/modules/es.date.now.js");
|
|
15
14
|
require("core-js/modules/es.function.bind.js");
|
|
16
15
|
require("core-js/modules/es.object.to-string.js");
|
|
@@ -39,14 +38,14 @@ var WorkerInteractor = exports.WorkerInteractor = /*#__PURE__*/function () {
|
|
|
39
38
|
}
|
|
40
39
|
return (0, _createClass2["default"])(WorkerInteractor, [{
|
|
41
40
|
key: "addFsLogger",
|
|
42
|
-
value: function addFsLogger(label,
|
|
41
|
+
value: function addFsLogger(label, logFolderPath) {
|
|
43
42
|
try {
|
|
44
|
-
console.info("[WorkerInteractor] add fs logger, label: ".concat(label
|
|
43
|
+
console.info("[WorkerInteractor] add fs logger, label: ".concat(label));
|
|
45
44
|
return this._promisify({
|
|
46
45
|
type: _constants.WorkerDirectives.ADD_FS_LOGGER,
|
|
47
46
|
data: {
|
|
48
47
|
label: label,
|
|
49
|
-
|
|
48
|
+
logFolderPath: logFolderPath
|
|
50
49
|
}
|
|
51
50
|
});
|
|
52
51
|
} catch (err) {
|