diff --git a/out/index.d.ts b/out/index.d.ts index a96c8d5..ba3bc69 100644 --- a/out/index.d.ts +++ b/out/index.d.ts @@ -45,17 +45,11 @@ export interface LoggingBaseOptions { } export declare class LoggingBase { private config; - private writeLock; - private setted_up; - private fileStream; - private errorStream; - private fileSize; - private errorSize; - private queue; + private logFile; + private errorFile; constructor(options?: Partial | string); console_out: boolean; - waitForSetup(): Promise; - private setup; + waitForSetup(): Promise; events: EventEmitter; debug(...message: any[]): void; log(...message: any[]): void; @@ -63,12 +57,7 @@ export declare class LoggingBase { logWithCustomColors(type: LoggingTypes, colors: string, ...message: any[]): void; error(error: Error | string): void; errorMessage(...message: any[]): void; - private message; - private writeMessageToFile; - private checkQueue; - private writeToLogFile; - private writeToErrorFile; - private initializeFile; + private message(type, message, customColors?, caller?); } export declare let Logging: LoggingBase; export default Logging; @@ -76,5 +65,5 @@ export declare enum LoggingTypes { Log = 0, Warning = 1, Error = 2, - Debug = 3 + Debug = 3, } diff --git a/out/index.js b/out/index.js index c04894e..3a85b7f 100644 --- a/out/index.js +++ b/out/index.js @@ -32,13 +32,87 @@ exports.Colors = { }; const maxFileSize = 500000000; const OriginalErrorStackFunction = Error.prototype.prepareStackTrace; +class LoggingFiles { + constructor(file) { + this.size = 0; + this.stream = undefined; + this.lock = new lock_1.default(); + this.queue = []; + this.file = path.resolve(file); + this.init(); + } + static getFile(filename) { + filename = path.resolve(filename); + let file = this.files.find(e => e.file === filename); + if (!file) { + file = new LoggingFiles(filename); + this.files.push(file); + } + return file; + } + async awaitinit() { + (await this.lock.getLock()).release(); + } + async init() { + let lock = await this.lock.getLock(); + await this.initializeFile(); + lock.release(); + this.checkQueue(); + } + async initializeFile(new_file = false) { + try { + const folder = path.dirname(this.file); + if (folder) { + if (!await fsExists(folder)) { + await fsMkDir(folder).catch(() => { }); //Could happen, if two seperate instances want to create the same folder so ignoring + } + } + let size = 0; + if (await fsExists(this.file)) { + let stats = await fsStat(this.file); + if (new_file || stats.size > maxFileSize) { + if (await fsExists(this.file + ".old")) + await fsUnlink(this.file + ".old"); + await fsMove(this.file, this.file + ".old"); + } + else { + size = stats.size; + } + } + this.stream = fs.createWriteStream(this.file, { flags: "a" }); + this.size = size; + } + catch (e) { + console.log(e); + //ToDo is this the right behavior? + process.exit(1); + } + } + async checkQueue() { + if (this.lock.locked) + return; + let lock = await this.lock.getLock(); + let msg; + while (msg = this.queue.shift()) { + await this.write_to_file(msg); + } + lock.release(); + } + async write_to_file(data) { + if (data.byteLength < maxFileSize && this.size + data.byteLength > maxFileSize) { + let f = await this.initializeFile(true); + } + this.size += data.byteLength; + this.stream.write(data); + } + write(data) { + this.queue.push(data); + this.checkQueue(); + } +} +LoggingFiles.files = []; class LoggingBase { constructor(options) { - this.writeLock = new lock_1.default(); - this.setted_up = false; - this.fileSize = 0; - this.errorSize = 0; - this.queue = new Array(); this.events = new events_1.EventEmitter(); let opt; if (!options) @@ -67,6 +141,12 @@ class LoggingBase { if (typeof this[key] === "function") this[key] = this[key].bind(this); } + if (this.config.logfile) { + this.logFile = LoggingFiles.getFile(this.config.logfile); + } + if (this.config.errorfile) { + this.errorFile = LoggingFiles.getFile(this.config.errorfile); + } } get console_out() { return this.config.console_out; @@ -74,24 +154,13 @@ class LoggingBase { set console_out(value) { this.config.console_out = value; } - async waitForSetup() { - (await this.writeLock.getLock()).release(); - } - async setup() { - this.setted_up = true; - let lock = await this.writeLock.getLock(); - if (this.config.logfile) { - let f = await this.initializeFile(this.config.logfile, true); - this.fileStream = f.stream; - this.fileSize = f.size; - } - if (this.config.errorfile) { - let f = await this.initializeFile(this.config.errorfile, false); - this.errorStream = f.stream; - this.errorSize = f.size; - } - lock.release(); - this.checkQueue(); + waitForSetup() { + let w = []; + if (this.logFile) + w.push(this.logFile.awaitinit()); + if (this.errorFile) + w.push(this.errorFile.awaitinit()); + return Promise.all(w); } debug(...message) { this.message(LoggingTypes.Debug, message); @@ -119,7 +188,7 @@ class LoggingBase { errorMessage(...message) { this.message(LoggingTypes.Error, message); } - async message(type, message, customColors, caller) { + message(type, message, customColors, caller) { var consoleLogFormat = exports.Colors.Reset; if (!customColors) { switch (type) { @@ -145,10 +214,10 @@ class LoggingBase { mb = message; } else { - message.forEach(e => { + message.forEach((e, i) => { if (typeof e !== "string") e = util.inspect(e, false, null); - if (e.endsWith("\n")) { + if (e.endsWith("\n") || i === message.length - 1) { mb += e; } else { @@ -167,89 +236,21 @@ class LoggingBase { message_lines.forEach(line => console.log(consoleLogFormat + prefix + line + exports.Colors.Reset)); } let m = message_lines.join("\n"); + m = m.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ""); let index = m.indexOf("\x1b"); while (index >= 0) { m = m.substring(0, index) + m.substring(index + 5, m.length); index = m.indexOf("\x1b"); } - m = m.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ""); - this.writeMessageToFile(m, type === LoggingTypes.Error); + let data = Buffer.from(m + "\n"); + if (type === LoggingTypes.Error && this.errorFile) { + this.errorFile.write(data); + } + if (this.logFile) { + this.logFile.write(data); + } this.events.emit("message", { type: type, message: mb }); } - writeMessageToFile(message, error) { - if (this.setted_up && (!this.fileStream || (error && !this.errorStream))) - return; - this.queue.push({ message: message.replace("\n", " "), error: error }); - this.checkQueue(); - } - async checkQueue() { - try { - if (this.writeLock.locked) - return; - if (this.queue.length <= 0) - return; - if (!this.setted_up) - return this.setup(); - let lock = await this.writeLock.getLock(); - var message = this.queue.shift(); - message.message += "\n"; - let data = new Buffer(message.message, "utf8"); - await this.writeToLogFile(data); - if (message.error) - await this.writeToErrorFile(data); - lock.release(); - if (this.queue.length > 0) - this.checkQueue(); - } - catch (e) { - console.log(e); - } - } - async writeToLogFile(data) { - if (data.byteLength < maxFileSize && this.fileSize + data.byteLength > maxFileSize) { - let f = await this.initializeFile(this.config.logfile, true); - this.fileStream = f.stream; - this.fileSize = f.size; - } - this.fileSize += data.byteLength; - this.fileStream.write(data); - } - async writeToErrorFile(data) { - if (data.byteLength < maxFileSize && this.errorSize + data.byteLength > maxFileSize) { - let f = await this.initializeFile(this.config.errorfile, true); - this.errorStream = f.stream; - this.errorSize = f.size; - } - this.errorSize += data.byteLength; - this.errorStream.write(data); - } - async initializeFile(file, new_file = true) { - try { - const folder = path.dirname(file); - if (folder) { - if (!await fsExists(folder)) { - await fsMkDir(folder).catch(() => { }); //Could happen, if two seperate logger want to create folder so ignoring - } - } - let size = 0; - if (await fsExists(file)) { - let stats = await fsStat(file); - if (new_file || stats.size > maxFileSize) { - if (await fsExists(file + ".old")) - await fsUnlink(file + ".old"); - await fsMove(file, file + ".old"); - } - else { - size = stats.size; - } - } - return { stream: fs.createWriteStream(file, { flags: "a" }), size: size }; - } - catch (e) { - console.log(e); - } - return { size: 0, stream: undefined }; - } } exports.LoggingBase = LoggingBase; exports.Logging = undefined; diff --git a/out/index.js.map b/out/index.js.map index f3978f8..9fe60b4 100644 --- a/out/index.js.map +++ b/out/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/out/lock.d.ts b/out/lock.d.ts index ac1e98d..9f7d876 100644 --- a/out/lock.d.ts +++ b/out/lock.d.ts @@ -7,6 +7,6 @@ export default class Lock { private toCome; constructor(); getLock(): Promise; - private lock; - private release; + private lock(); + private release(); } diff --git a/out/lock.js.map b/out/lock.js.map index 61cc3a3..9eff807 100644 --- a/out/lock.js.map +++ b/out/lock.js.map @@ -1 +1 @@ -{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":";;AACA,MAAqB,IAAI;IAOtB;QANQ,YAAO,GAAY,KAAK,CAAC;QAIzB,WAAM,GAAmB,EAAE,CAAC;QAGjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAPD,IAAI,MAAM;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAOD,KAAK,CAAC,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aAC9C;YACF,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBACnB,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAA;YACL,CAAC,CAAC,CAAA;SACJ;IACJ,CAAC;IAEO,IAAI;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SACxB;aAAM;YACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACvB;IACJ,CAAC;CACH;AAlCD,uBAkCC"} \ No newline at end of file +{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":";;AACA;IAOG;QANQ,YAAO,GAAY,KAAK,CAAC;QAIzB,WAAM,GAAmB,EAAE,CAAC;QAGjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAPD,IAAI,MAAM;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAOD,KAAK,CAAC,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aAC9C;YACF,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBACnB,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAA;YACL,CAAC,CAAC,CAAA;SACJ;IACJ,CAAC;IAEO,IAAI;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SACxB;aAAM;YACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACvB;IACJ,CAAC;CACH;AAlCD,uBAkCC"} \ No newline at end of file diff --git a/out/test.js b/out/test.js index e9d9a36..0126ab9 100644 --- a/out/test.js +++ b/out/test.js @@ -14,7 +14,18 @@ let cus = new index_1.LoggingBase({ name: "test" }); cus.log("Hello from custom Logger"); let cus2 = new index_1.LoggingBase("test2"); cus2.log("Hello from custom Logger 2"); -// Logging.console_out = false; +let cus22 = new index_1.LoggingBase("test2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +cus22.log("Hello from custom Logger 22"); +cus2.log("Hello from custom Logger 2"); +index_1.Logging.console_out = false; // Logging.waitForSetup().then(() => { // for (let i = 0; i < 7000; i++) { // Logging.log(randomBytes(50000).toString("hex")) diff --git a/out/test.js.map b/out/test.js.map index 02b42b9..e57a6be 100644 --- a/out/test.js.map +++ b/out/test.js.map @@ -1 +1 @@ -{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,mCAA+C;AAG/C,eAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACnB,eAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,eAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACvC,eAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAClC,eAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE/C,eAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;AAE7F,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;AACrB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;IAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;AAE/E,IAAI,GAAG,GAAG,IAAI,mBAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;AAEnC,IAAI,IAAI,GAAG,IAAI,mBAAW,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAEtC,+BAA+B;AAC/B,sCAAsC;AACtC,sCAAsC;AACtC,wDAAwD;AACxD,OAAO;AACP,MAAM"} \ No newline at end of file +{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,mCAA+C;AAG/C,eAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACnB,eAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,eAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACvC,eAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAClC,eAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE/C,eAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;AAE7F,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;AACrB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;IAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;AAE/E,IAAI,GAAG,GAAG,IAAI,mBAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;AAEnC,IAAI,IAAI,GAAG,IAAI,mBAAW,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAEtC,IAAI,KAAK,GAAG,IAAI,mBAAW,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AACxC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AACtC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AACxC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AACtC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AACxC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AACtC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AACxC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AACtC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AACxC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAEtC,eAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,sCAAsC;AACtC,sCAAsC;AACtC,wDAAwD;AACxD,OAAO;AACP,MAAM"} \ No newline at end of file diff --git a/package.json b/package.json index 1eeff39..dc21863 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hibas123/nodelogging", - "version": "1.3.15", + "version": "1.3.16", "description": "", "main": "out/index.js", "types": "out/index.d.ts", diff --git a/src/index.ts b/src/index.ts index f9f5c67..3bfadd3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -55,18 +55,99 @@ export interface LoggingBaseOptions { console_out: boolean; } +class LoggingFiles { + private static files: LoggingFiles[] = []; + static getFile(filename: string): LoggingFiles { + filename = path.resolve(filename); + let file = this.files.find(e => e.file === filename); + if (!file) { + file = new LoggingFiles(filename); + this.files.push(file); + } + return file; + } + + private file: string; + private size: number = 0; + private stream: fs.WriteStream = undefined; + private lock = new Lock(); + private constructor(file: string) { + this.file = path.resolve(file); + this.init(); + } + + public async awaitinit() { + (await this.lock.getLock()).release(); + } + + private async init() { + let lock = await this.lock.getLock(); + await this.initializeFile() + lock.release(); + this.checkQueue() + } + + private async initializeFile(new_file = false) { + try { + const folder = path.dirname(this.file); + if (folder) { + if (!await fsExists(folder)) { + await fsMkDir(folder).catch(() => { }); //Could happen, if two seperate instances want to create the same folder so ignoring + } + } + + let size = 0; + if (await fsExists(this.file)) { + let stats = await fsStat(this.file); + if (new_file || stats.size > maxFileSize) { + if (await fsExists(this.file + ".old")) + await fsUnlink(this.file + ".old"); + await fsMove(this.file, this.file + ".old") + } else { + size = stats.size; + } + } + + this.stream = fs.createWriteStream(this.file, { flags: "a" }) + this.size = size; + } catch (e) { + console.log(e); + //ToDo is this the right behavior? + process.exit(1); + } + } + + private queue: Buffer[] = []; + + async checkQueue() { + if (this.lock.locked) return; + let lock = await this.lock.getLock(); + let msg: Buffer; + while (msg = this.queue.shift()) { + await this.write_to_file(msg); + } + lock.release(); + } + + private async write_to_file(data: Buffer) { + if (data.byteLength < maxFileSize && this.size + data.byteLength > maxFileSize) { + let f = await this.initializeFile(true); + } + this.size += data.byteLength; + this.stream.write(data); + } + + public write(data: Buffer) { + this.queue.push(data); + this.checkQueue() + } +} + export class LoggingBase { private config: LoggingBaseOptions; - private writeLock = new Lock(); - private setted_up = false; - - private fileStream: fs.WriteStream; - private errorStream: fs.WriteStream; - private fileSize: number = 0; - private errorSize: number = 0; - - private queue = new Array<{ message: string, error: boolean }>(); + private logFile: LoggingFiles; + private errorFile: LoggingFiles; constructor(options?: Partial | string) { let opt: Partial; @@ -95,6 +176,14 @@ export class LoggingBase { for (let key in this) { if (typeof this[key] === "function") this[key] = (this[key]).bind(this); } + + if (this.config.logfile) { + this.logFile = LoggingFiles.getFile(this.config.logfile); + } + + if (this.config.errorfile) { + this.errorFile = LoggingFiles.getFile(this.config.errorfile); + } } get console_out() { @@ -105,26 +194,11 @@ export class LoggingBase { this.config.console_out = value; } - public async waitForSetup() { - (await this.writeLock.getLock()).release(); - } - - private async setup() { - this.setted_up = true; - let lock = await this.writeLock.getLock(); - if (this.config.logfile) { - let f = await this.initializeFile(this.config.logfile, true); - this.fileStream = f.stream; - this.fileSize = f.size; - } - - if (this.config.errorfile) { - let f = await this.initializeFile(this.config.errorfile, false); - this.errorStream = f.stream; - this.errorSize = f.size; - } - lock.release(); - this.checkQueue(); + public waitForSetup() { + let w = []; + if (this.logFile) w.push(this.logFile.awaitinit()); + if (this.errorFile) w.push(this.errorFile.awaitinit()); + return Promise.all(w) } public events: EventEmitter = new EventEmitter(); @@ -159,7 +233,7 @@ export class LoggingBase { this.message(LoggingTypes.Error, message); } - private async message(type: LoggingTypes, message: any[] | string, customColors?: string, caller?: { file: string, line: number }) { + private message(type: LoggingTypes, message: any[] | string, customColors?: string, caller?: { file: string, line: number }) { var consoleLogFormat = Colors.Reset; if (!customColors) { switch (type) { @@ -183,9 +257,9 @@ export class LoggingBase { if (typeof message === "string") { mb = message; } else { - message.forEach(e => { + message.forEach((e, i) => { if (typeof e !== "string") e = util.inspect(e, false, null); - if (e.endsWith("\n")) { + if (e.endsWith("\n") || i === message.length - 1) { mb += e; } else { mb += e + " "; @@ -204,88 +278,24 @@ export class LoggingBase { } let m = message_lines.join("\n"); + + m = m.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ""); + let index = m.indexOf("\x1b"); while (index >= 0) { m = m.substring(0, index) + m.substring(index + 5, m.length); index = m.indexOf("\x1b"); } - m = m.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ""); - this.writeMessageToFile(m, type === LoggingTypes.Error); + let data = Buffer.from(m + "\n") + if (type === LoggingTypes.Error && this.errorFile) { + this.errorFile.write(data); + } + if (this.logFile) { + this.logFile.write(data); + } this.events.emit("message", { type: type, message: mb }); } - - private writeMessageToFile(message: string, error?: boolean) { - if (this.setted_up && (!this.fileStream || (error && !this.errorStream))) return; - this.queue.push({ message: message.replace("\n", " "), error: error }); - this.checkQueue(); - } - - private async checkQueue() { - try { - if (this.writeLock.locked) return; - if (this.queue.length <= 0) return; - if (!this.setted_up) return this.setup(); - let lock = await this.writeLock.getLock(); - var message = this.queue.shift(); - message.message += "\n"; - let data = new Buffer(message.message, "utf8"); - await this.writeToLogFile(data); - if (message.error) await this.writeToErrorFile(data); - lock.release(); - if (this.queue.length > 0) this.checkQueue(); - } catch (e) { - console.log(e) - } - } - - private async writeToLogFile(data: Buffer) { - if (data.byteLength < maxFileSize && this.fileSize + data.byteLength > maxFileSize) { - let f = await this.initializeFile(this.config.logfile, true); - this.fileStream = f.stream; - this.fileSize = f.size; - } - this.fileSize += data.byteLength; - this.fileStream.write(data); - } - - private async writeToErrorFile(data: Buffer) { - if (data.byteLength < maxFileSize && this.errorSize + data.byteLength > maxFileSize) { - let f = await this.initializeFile(this.config.errorfile, true); - this.errorStream = f.stream; - this.errorSize = f.size; - } - this.errorSize += data.byteLength; - this.errorStream.write(data); - } - - private async initializeFile(file: string, new_file = true): Promise<{ stream: fs.WriteStream, size: number }> { - try { - const folder = path.dirname(file); - if (folder) { - if (!await fsExists(folder)) { - await fsMkDir(folder).catch(() => { }); //Could happen, if two seperate logger want to create folder so ignoring - } - } - - let size = 0; - if (await fsExists(file)) { - let stats = await fsStat(file); - if (new_file || stats.size > maxFileSize) { - if (await fsExists(file + ".old")) - await fsUnlink(file + ".old"); - await fsMove(file, file + ".old") - } else { - size = stats.size; - } - } - - return { stream: fs.createWriteStream(file, { flags: "a" }), size: size }; - } catch (e) { - console.log(e); - } - return { size: 0, stream: undefined }; - } } export let Logging: LoggingBase = undefined; @@ -312,7 +322,7 @@ function fsStat(path: string) { }) } -function fsMove(oldPath, newPath) { +function fsMove(oldPath: string, newPath: string) { return new Promise((resolve, reject) => { let callback = (err?) => { @@ -348,13 +358,13 @@ function fsMove(oldPath, newPath) { }) } -function fsExists(path) { +function fsExists(path: string) { return new Promise((resolve, reject) => { fs.exists(path, resolve); }); } -function fsMkDir(path) { +function fsMkDir(path: string) { return new Promise((resolve, reject) => { fs.mkdir(path, (err) => err ? reject(err) : resolve()); }); diff --git a/src/test.ts b/src/test.ts index 7bb17b6..8b6e0ac 100644 --- a/src/test.ts +++ b/src/test.ts @@ -18,7 +18,19 @@ cus.log("Hello from custom Logger") let cus2 = new LoggingBase("test2"); cus2.log("Hello from custom Logger 2") -// Logging.console_out = false; +let cus22 = new LoggingBase("test2"); +cus22.log("Hello from custom Logger 22") +cus2.log("Hello from custom Logger 2") +cus22.log("Hello from custom Logger 22") +cus2.log("Hello from custom Logger 2") +cus22.log("Hello from custom Logger 22") +cus2.log("Hello from custom Logger 2") +cus22.log("Hello from custom Logger 22") +cus2.log("Hello from custom Logger 2") +cus22.log("Hello from custom Logger 22") +cus2.log("Hello from custom Logger 2") + +Logging.console_out = false; // Logging.waitForSetup().then(() => { // for (let i = 0; i < 7000; i++) { // Logging.log(randomBytes(50000).toString("hex"))