mirror of
https://github.com/nttgin/BGPalerter.git
synced 2024-05-19 06:50:08 +00:00
moved file logger to external package
This commit is contained in:
38
package-lock.json
generated
38
package-lock.json
generated
@@ -14,6 +14,7 @@
|
|||||||
"batch-promises": "^0.0.3",
|
"batch-promises": "^0.0.3",
|
||||||
"brembo": "^2.0.5",
|
"brembo": "^2.0.5",
|
||||||
"deepmerge": "^4.2.2",
|
"deepmerge": "^4.2.2",
|
||||||
|
"fast-file-logger": "^1.0.2",
|
||||||
"file-stream-rotator": "^0.5.7",
|
"file-stream-rotator": "^0.5.7",
|
||||||
"https-proxy-agent": "^5.0.0",
|
"https-proxy-agent": "^5.0.0",
|
||||||
"inquirer": "^8.0.0",
|
"inquirer": "^8.0.0",
|
||||||
@@ -3117,6 +3118,19 @@
|
|||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/fast-file-logger": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-file-logger/-/fast-file-logger-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-bVRb2VPVVQWf58Mdi3rDzmLUdSIN/y0Az5GOzRmwUh+uN1fWrm02zdYhyhtuEmEUhFxhx0WjgNh0VtQyOmL4Qg==",
|
||||||
|
"dependencies": {
|
||||||
|
"file-stream-rotator": "^0.5.7",
|
||||||
|
"moment": "^2.29.1",
|
||||||
|
"zlib": "^1.0.5"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"fast-file-logger": "dist/fileLogger.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fast-glob": {
|
"node_modules/fast-glob": {
|
||||||
"version": "3.2.5",
|
"version": "3.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||||
@@ -7617,6 +7631,15 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/zlib": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.2.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -10316,6 +10339,16 @@
|
|||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-file-logger": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-file-logger/-/fast-file-logger-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-bVRb2VPVVQWf58Mdi3rDzmLUdSIN/y0Az5GOzRmwUh+uN1fWrm02zdYhyhtuEmEUhFxhx0WjgNh0VtQyOmL4Qg==",
|
||||||
|
"requires": {
|
||||||
|
"file-stream-rotator": "^0.5.7",
|
||||||
|
"moment": "^2.29.1",
|
||||||
|
"zlib": "^1.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fast-glob": {
|
"fast-glob": {
|
||||||
"version": "3.2.5",
|
"version": "3.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||||
@@ -14007,6 +14040,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||||
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
},
|
||||||
|
"zlib": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,7 @@
|
|||||||
"batch-promises": "^0.0.3",
|
"batch-promises": "^0.0.3",
|
||||||
"brembo": "^2.0.5",
|
"brembo": "^2.0.5",
|
||||||
"deepmerge": "^4.2.2",
|
"deepmerge": "^4.2.2",
|
||||||
|
"fast-file-logger": "^1.0.2",
|
||||||
"file-stream-rotator": "^0.5.7",
|
"file-stream-rotator": "^0.5.7",
|
||||||
"https-proxy-agent": "^5.0.0",
|
"https-proxy-agent": "^5.0.0",
|
||||||
"inquirer": "^8.0.0",
|
"inquirer": "^8.0.0",
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import PubSub from './utils/pubSub';
|
import PubSub from './utils/pubSub';
|
||||||
import FileLogger from './utils/fileLogger';
|
import FileLogger from 'fast-file-logger';
|
||||||
import { version } from '../package.json';
|
import { version } from '../package.json';
|
||||||
import Storage from './utils/storages/storageFile';
|
import Storage from './utils/storages/storageFile';
|
||||||
import url from 'url';
|
import url from 'url';
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
import moment from "moment";
|
|
||||||
import rotatingLogStream from "file-stream-rotator";
|
|
||||||
import zlib from 'zlib';
|
|
||||||
import fs from 'fs';
|
|
||||||
|
|
||||||
export default class FileLogger {
|
|
||||||
|
|
||||||
constructor(params) {
|
|
||||||
this.format = params.format || this.defaultFormat;
|
|
||||||
this.logRotatePattern = params.logRotatePattern || "YYYY-MM-DD";
|
|
||||||
this.filename = params.filename;
|
|
||||||
this.symLinkName = params.symLink;
|
|
||||||
this.useUTC = params.useUTC;
|
|
||||||
this.directory = params.directory;
|
|
||||||
this.levels = params.levels || ['error', 'info', 'verbose'];
|
|
||||||
|
|
||||||
// File rotation
|
|
||||||
this.compressOnRotation = params.compressOnRotation;
|
|
||||||
this.maxFileSizeMB = parseFloat(params.maxFileSizeMB || 20);
|
|
||||||
this.maxRetainedFiles = parseFloat(params.maxRetainedFiles || 20);
|
|
||||||
|
|
||||||
if (!fs.existsSync(this.directory)){
|
|
||||||
fs.mkdirSync(this.directory);
|
|
||||||
}
|
|
||||||
|
|
||||||
const streamOptions = {
|
|
||||||
filename: `${this.directory}/${this.filename}`,
|
|
||||||
size: `${this.maxFileSizeMB}m`,
|
|
||||||
frequency: "custom",
|
|
||||||
end_stream: true,
|
|
||||||
max_logs: this.maxRetainedFiles,
|
|
||||||
date_format: this.logRotatePattern,
|
|
||||||
utc: this.useUTC,
|
|
||||||
create_symlink: true,
|
|
||||||
symlink_name: this.symLinkName,
|
|
||||||
verbose: false,
|
|
||||||
audit_file: `${this.directory}/.${this.symLinkName.replace(".log", "")}`
|
|
||||||
};
|
|
||||||
|
|
||||||
this.stream = rotatingLogStream.getStream(streamOptions);
|
|
||||||
|
|
||||||
if (this.compressOnRotation) {
|
|
||||||
this.stream.on('rotate', (oldFile, newFile) => {
|
|
||||||
try {
|
|
||||||
const tmpFile = newFile + ".tmp";
|
|
||||||
const zip = zlib.createGzip();
|
|
||||||
const read = fs.createReadStream(newFile);
|
|
||||||
const write = fs.createWriteStream(tmpFile);
|
|
||||||
read.pipe(zip).pipe(write);
|
|
||||||
write.on('finish', () => {
|
|
||||||
fs.unlinkSync(newFile);
|
|
||||||
fs.renameSync(tmpFile, newFile);
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error); // Nothing else we can do
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultFormat = (json) => {
|
|
||||||
return JSON.stringify(json);
|
|
||||||
};
|
|
||||||
|
|
||||||
getCurrentDate = () => {
|
|
||||||
if (this.useUTC) {
|
|
||||||
return moment.utc();
|
|
||||||
} else {
|
|
||||||
return moment();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
log = (data) => {
|
|
||||||
try {
|
|
||||||
const item = this.format({
|
|
||||||
timestamp: this.getCurrentDate().format('YYYY-MM-DDTHH:mm:ssZ'),
|
|
||||||
data
|
|
||||||
});
|
|
||||||
this.stream.write(item + "\n");
|
|
||||||
} catch (error) {
|
|
||||||
console.log(data);
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user