1
0
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:
Massimo Candela
2021-04-10 02:17:09 +02:00
parent 57d971f5e5
commit 24c656457f
4 changed files with 40 additions and 87 deletions

38
package-lock.json generated
View File

@@ -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="
} }
} }
} }

View File

@@ -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",

View File

@@ -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';

View File

@@ -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);
}
};
};