diff --git a/.gitignore b/.gitignore index b1c07bf..2ef46cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ logs/ -yarn.lock \ No newline at end of file +yarn.lock +out/ \ No newline at end of file diff --git a/out/index.d.ts b/out/index.d.ts deleted file mode 100644 index ba3bc69..0000000 --- a/out/index.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -/// -import { EventEmitter } from "events"; -export declare const Colors: { - Reset: string; - Bright: string; - Dim: string; - Underscore: string; - Blink: string; - Reverse: string; - Hidden: string; - FgBlack: string; - FgRed: string; - FgGreen: string; - FgYellow: string; - FgBlue: string; - FgMagenta: string; - FgCyan: string; - FgWhite: string; - BgBlack: string; - BgRed: string; - BgGreen: string; - BgYellow: string; - BgBlue: string; - BgMagenta: string; - BgCyan: string; - BgWhite: string; -}; -export interface LoggingBaseOptions { - /** - * Name will be prefixed on Console output and added to logfiles, if not specified here - */ - name: string; - /** - * Filename/path of the logfile. Skip if generated with name - */ - logfile: string; - /** - * Filename/path of the logfile. Skip if generated with name - */ - errorfile: string; - /** - * Prints output to console - */ - console_out: boolean; -} -export declare class LoggingBase { - private config; - private logFile; - private errorFile; - constructor(options?: Partial | string); - console_out: boolean; - waitForSetup(): Promise; - events: EventEmitter; - debug(...message: any[]): void; - log(...message: any[]): void; - warning(...message: any[]): void; - logWithCustomColors(type: LoggingTypes, colors: string, ...message: any[]): void; - error(error: Error | string): void; - errorMessage(...message: any[]): void; - private message(type, message, customColors?, caller?); -} -export declare let Logging: LoggingBase; -export default Logging; -export declare enum LoggingTypes { - Log = 0, - Warning = 1, - Error = 2, - Debug = 3, -} diff --git a/out/index.js b/out/index.js deleted file mode 100644 index 29a72c5..0000000 --- a/out/index.js +++ /dev/null @@ -1,397 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const util = require("util"); -const fs = require("fs"); -const events_1 = require("events"); -const path = require("path"); -const lock_1 = require("./lock"); -exports.Colors = { - Reset: "\x1b[0m", - Bright: "\x1b[1m", - Dim: "\x1b[2m", - Underscore: "\x1b[4m", - Blink: "\x1b[5m", - Reverse: "\x1b[7m", - Hidden: "\x1b[8m", - FgBlack: "\x1b[30m", - FgRed: "\x1b[31m", - FgGreen: "\x1b[32m", - FgYellow: "\x1b[33m", - FgBlue: "\x1b[34m", - FgMagenta: "\x1b[35m", - FgCyan: "\x1b[36m", - FgWhite: "\x1b[37m", - BgBlack: "\x1b[40m", - BgRed: "\x1b[41m", - BgGreen: "\x1b[42m", - BgYellow: "\x1b[43m", - BgBlue: "\x1b[44m", - BgMagenta: "\x1b[45m", - BgCyan: "\x1b[46m", - BgWhite: "\x1b[47m" -}; -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 { - if (this.stream) { - this.stream.close(); - } - 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) { - try { - if (data.byteLength < maxFileSize && this.size + data.byteLength > maxFileSize) { - await this.initializeFile(true); - } - this.size += data.byteLength; - this.stream.write(data); - } - catch (err) { - console.error(err); - this.initializeFile(false); - this.write_to_file(data); - } - } - write(data) { - this.queue.push(data); - this.checkQueue(); - } -} -LoggingFiles.files = []; -class LoggingBase { - constructor(options) { - this.events = new events_1.EventEmitter(); - let opt; - if (!options) - opt = {}; - else if (typeof options === "string") { - opt = { name: options }; - } - else { - opt = options; - } - if (opt.name) { - if (opt.logfile === undefined) { - opt.logfile = `./logs/all.${opt.name}.log`; - } - if (opt.errorfile === undefined) { - opt.errorfile = `./logs/error.${opt.name}.log`; - } - } - this.config = Object.assign({ - name: undefined, - console_out: true, - logfile: "./logs/all.log", - errorfile: "./logs/error.log" - }, opt); - 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() { - return this.config.console_out; - } - set console_out(value) { - this.config.console_out = value; - } - 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); - } - log(...message) { - this.message(LoggingTypes.Log, message); - } - warning(...message) { - this.message(LoggingTypes.Warning, message); - } - logWithCustomColors(type, colors, ...message) { - this.message(type, message, colors); - } - error(error) { - if (!error) - error = "Empty ERROR was passed, so no informations available"; - if (typeof error === "string") { - let e = new Error(); - this.message(LoggingTypes.Error, [error, "\n", e.stack]); - } - else { - this.message(LoggingTypes.Error, [error.message, "\n", error.stack], undefined, getCallerFromExisting(error)); - } - } - errorMessage(...message) { - this.message(LoggingTypes.Error, message); - } - message(type, message, customColors, caller) { - var consoleLogFormat = exports.Colors.Reset; - if (!customColors) { - switch (type) { - case LoggingTypes.Log: - //m += FgWhite + BgBlack; - break; - case LoggingTypes.Error: - consoleLogFormat += exports.Colors.FgRed; //FgWhite + BgRed + FgWhite; - break; - case LoggingTypes.Debug: - consoleLogFormat += exports.Colors.FgCyan; - break; - case LoggingTypes.Warning: - consoleLogFormat += exports.Colors.FgYellow; - break; - } - } - else { - consoleLogFormat += customColors; - } - var mb = ""; - if (typeof message === "string") { - mb = message; - } - else { - message.forEach((e, i) => { - if (typeof e !== "string") - e = util.inspect(e, false, null); - if (e.endsWith("\n") || i === message.length - 1) { - mb += e; - } - else { - mb += e + " "; - } - }); - } - let file = caller || getCallerFile(); - let date = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''); - let prefix = `[${LoggingTypes[type]}][${file.file}:${file.line}][${date}]: `; - let message_lines = mb.split("\n").map(line => prefix + line); - if (this.config.console_out) { - let name = ""; - if (this.config.name) - name = `[${this.config.name}]`; - message_lines.forEach(line => console.log(consoleLogFormat + name + 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"); - } - 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: m, module: this.config.name }); - } -} -exports.LoggingBase = LoggingBase; -exports.Logging = undefined; -if (process.env.LOGGING_NO_DEFAULT !== "true") { - exports.Logging = new LoggingBase(); -} -exports.default = exports.Logging; -function fsUnlink(path) { - return new Promise((resolve, reject) => { - fs.unlink(path, (err) => { - if (err) - reject(err); - else - resolve(); - }); - }); -} -function fsStat(path) { - return new Promise((resolve, reject) => { - fs.stat(path, (err, stats) => { - if (err) - reject(err); - else - resolve(stats); - }); - }); -} -function fsMove(oldPath, newPath) { - return new Promise((resolve, reject) => { - let callback = (err) => { - if (err) - reject(err); - else - resolve(); - }; - fs.rename(oldPath, newPath, function (err) { - if (err) { - if (err.code === 'EXDEV') { - copy(); - } - else { - callback(err); - } - return; - } - callback(); - }); - function copy() { - fs.copyFile(oldPath, newPath, (err) => { - if (err) - callback(err); - else - fs.unlink(oldPath, callback); - }); - // var readStream = fs.createReadStream(oldPath); - // var writeStream = fs.createWriteStream(newPath); - // readStream.on('error', callback); - // writeStream.on('error', callback); - // readStream.on('close', function () { - // fs.unlink(oldPath, callback); - // }); - // readStream.pipe(writeStream); - } - }); -} -function fsExists(path) { - return new Promise((resolve, reject) => { - fs.exists(path, resolve); - }); -} -function fsMkDir(path) { - return new Promise((resolve, reject) => { - fs.mkdir(path, (err) => err ? reject(err) : resolve()); - }); -} -function getStack() { - // Save original Error.prepareStackTrace - let origPrepareStackTrace = Error.prepareStackTrace; - // Override with function that just returns `stack` - Error.prepareStackTrace = function (_, stack) { - return stack; - }; - // Create a new `Error`, which automatically gets `stack` - let err = new Error(); - // Evaluate `err.stack`, which calls our new `Error.prepareStackTrace` - let stack = err.stack; - // Restore original `Error.prepareStackTrace` - Error.prepareStackTrace = origPrepareStackTrace; - // Remove superfluous function call on stack - stack.shift(); // getStack --> Error - return stack; -} -function getCallerFile() { - try { - let stack = getStack(); - let current_file = stack.shift().getFileName(); - while (stack.length) { - let caller_file = stack.shift(); - const util = require("util"); - if (current_file !== caller_file.getFileName()) - return { - file: path.basename(caller_file.getFileName()), - line: caller_file.getLineNumber() - }; - } - } - catch (err) { } - return { file: undefined, line: 0 }; -} -function getCallerFromExisting(err) { - let lines = err.stack.split("\n"); - let current = path.basename(__filename); - lines.shift(); // removing first line - while (lines.length > 0) { - let line = lines.shift(); - let matches = line.match(/[a-zA-Z_-]+[.][a-zA-Z_-]+[:][0-9]+/g); - if (matches && matches.length > 0) { - let [f, line] = matches[0].split(":"); - if (f != current) { - return { - file: f, line: Number(line) - }; - } - } - } -} -var LoggingTypes; -(function (LoggingTypes) { - LoggingTypes[LoggingTypes["Log"] = 0] = "Log"; - LoggingTypes[LoggingTypes["Warning"] = 1] = "Warning"; - LoggingTypes[LoggingTypes["Error"] = 2] = "Error"; - LoggingTypes[LoggingTypes["Debug"] = 3] = "Debug"; -})(LoggingTypes = exports.LoggingTypes || (exports.LoggingTypes = {})); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/out/index.js.map b/out/index.js.map deleted file mode 100644 index 548b808..0000000 --- a/out/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 deleted file mode 100644 index 9f7d876..0000000 --- a/out/lock.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare type Release = { - release: () => void; -}; -export default class Lock { - private _locked; - readonly locked: boolean; - private toCome; - constructor(); - getLock(): Promise; - private lock(); - private release(); -} diff --git a/out/lock.js b/out/lock.js deleted file mode 100644 index 3799100..0000000 --- a/out/lock.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class Lock { - constructor() { - this._locked = false; - this.toCome = []; - this.release = this.release.bind(this); - } - get locked() { - return this._locked; - } - async getLock() { - if (!this._locked) - return { release: this.lock() }; - else { - return new Promise((resolve) => { - this.toCome.push(() => { - resolve({ release: this.lock() }); - }); - }); - } - } - lock() { - this._locked = true; - return this.release; - } - async release() { - if (this.toCome.length > 0) { - this.toCome.shift()(); - } - else { - this._locked = false; - } - } -} -exports.default = Lock; -//# sourceMappingURL=lock.js.map \ No newline at end of file diff --git a/out/lock.js.map b/out/lock.js.map deleted file mode 100644 index 9eff807..0000000 --- a/out/lock.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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.d.ts b/out/test.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/out/test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/out/test.js b/out/test.js deleted file mode 100644 index e0f03ab..0000000 --- a/out/test.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = require("./index"); -const crypto_1 = require("crypto"); -index_1.Logging.log("test"); -index_1.Logging.log("i", "am", { a: "an" }, 1000); -index_1.Logging.error(new Error("fehler 001")); -index_1.Logging.debug("Some Debug infos"); -index_1.Logging.errorMessage("i", "am", "an", "error"); -index_1.Logging.log("\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m\x1b[31m TEST \x1b[31m\x1b[31m\x1b[31m"); -let err = new Error(); -if (typeof err.stack !== "string") - console.log("Stacktrace invalid", err.stack); -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"); -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; -async function benchmark(count, message_size) { - await index_1.Logging.waitForSetup(); - const randData = crypto_1.randomBytes(message_size).toString("hex"); - const t = process.hrtime(); - for (let i = 0; i < count; i++) { - index_1.Logging.log(randData); - } - const diff = process.hrtime(t); - const NS_PER_SEC = 1e9; - await index_1.Logging.waitForSetup(); - const ns = diff[0] * NS_PER_SEC + diff[1]; - console.log(`Benchmark took ${ns / 1000000}ms for ${count} messages with a size of ${message_size} characters`); - console.log(`This is equal to ${(ns / 1000000) / count} ms per message`); -} -index_1.Logging.waitForSetup().then(async () => { - console.log("Large data benchmark:"); - await benchmark(7000, 50000); - console.log("Realdata data benchmark:"); - await benchmark(100000, 100); -}); -//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/out/test.js.map b/out/test.js.map deleted file mode 100644 index 5fcaa95..0000000 --- a/out/test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"} \ No newline at end of file