@soinlabs/hawk
Advanced tools
Comparing version 0.1.1 to 0.2.0
@@ -40,5 +40,13 @@ const LoggedError = require("../src/LoggedError"); | ||
test("Should set message and return this", () => { | ||
expect(loggedError.setStatus(0)).not.toBeNull; | ||
expect(loggedError.status).toBe(0); | ||
}); | ||
test("Should set status and return this", () => { | ||
expect(loggedError.setMessage("error")).not.toBeNull; | ||
expect(loggedError.message).toBe("error"); | ||
}); | ||
test("Should set error level and return this", () => { | ||
expect(loggedError.setErrorLevel("error")).not.toBeNull; | ||
expect(loggedError.errorLevel).toBe("error"); | ||
}); | ||
test("Should set referenceCode and return this", () => { | ||
@@ -68,2 +76,2 @@ expect(loggedError.setReferenceCode("logged error test")).not.toBeNull; | ||
}); | ||
}); | ||
}); |
@@ -6,3 +6,3 @@ const LoggedError = require("../src/LoggedError"); | ||
describe("LoggedError and Logger Integration", () => { | ||
let logger = new Logger(); | ||
let logger = new Logger({ referenceCode: "referenceCode" }); | ||
it("Should create log", () => { | ||
@@ -9,0 +9,0 @@ const dir = os.tmpdir(); |
@@ -6,2 +6,3 @@ const Logger = require("../src/Logger"); | ||
let logger = new Logger({ | ||
referenceCode: "referenceCode", | ||
slackToken: "slack", | ||
@@ -18,2 +19,4 @@ }); | ||
expect(logger.path).not.toBe(undefined); | ||
expect(logger.referenceCode).not.toBe(undefined); | ||
expect(logger.referenceCode).not.toBeNull; | ||
expect(logger.slackToken).toBe("slack"); | ||
@@ -28,2 +31,18 @@ }); | ||
}); | ||
test("Should set Max Size", () => { | ||
logger.setMaxSize("20m"); | ||
expect(logger.maxsize).toBe("20m"); | ||
}); | ||
test("Should set Max Files", () => { | ||
logger.setMaxSize("3d"); | ||
expect(logger.maxsize).toBe("3d"); | ||
}); | ||
test("Should set Date Pattern", () => { | ||
logger.setDatePattern("YYYY-MM-DD"); | ||
expect(logger.datepattern).toBe("YYYY-MM-DD"); | ||
}); | ||
test("Should set Reference Code", () => { | ||
logger.setReferenceCode("referenceCode"); | ||
expect(logger.referenceCode).toBe("referenceCode"); | ||
}); | ||
test("Should throw error if message is null", () => { | ||
@@ -37,4 +56,4 @@ try { | ||
test("Should throw error if path is null", () => { | ||
newLogger = new Logger(); | ||
try { | ||
newLogger = new Logger({referenceCode: "referenceCode"}); | ||
newLogger.log({ message: "Error" }); | ||
@@ -41,0 +60,0 @@ } catch (e) { |
{ | ||
"name": "@soinlabs/hawk", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -18,51 +18,103 @@ const winston = require("winston"); | ||
*/ | ||
write(log, dir, maxsize, maxfiles, datepattern) { | ||
this.#validate(dir); | ||
let fileName = ""; | ||
if (log.referenceCode) { | ||
fileName = `${log.referenceCode}-${log.level}-%DATE%.log`; | ||
} else fileName = `${log.level}-%DATE%.log`; | ||
constructor(referenceCode, dir, maxsize, maxfiles, datepattern){ | ||
var rotateTransport = new DailyRotateFile({ | ||
filename: path.join(dir, fileName), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: log.level, | ||
handleExceptions: true, | ||
}); | ||
this.rotateTransportError = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-error-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "error", | ||
handleExceptions: false, | ||
}); | ||
const logger = winston.createLogger({ | ||
format: ecsFormat(), | ||
transports: [ | ||
rotateTransport, | ||
new winston.transports.Console({ | ||
handleExceptions: true, | ||
level: log.level, | ||
format: winston.format.combine( | ||
winston.format.timestamp(), | ||
winston.format.colorize(), | ||
winston.format.prettyPrint(), | ||
winston.format.simple(), | ||
winston.format.printf( | ||
(info) => `[${info.timestamp}] ${info.level}: ${info.message}` | ||
) | ||
), | ||
}), | ||
], | ||
}); | ||
logger.log(log); | ||
} | ||
this.rotateTransportWarn = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-warn-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "warn", | ||
handleExceptions: false, | ||
}); | ||
/** | ||
* Validate if directory exists | ||
* if it doesnt exist throw an error | ||
* @param {String} dir | ||
*/ | ||
#validate(dir) { | ||
if (!fs.existsSync(dir)) { | ||
throw new Error("Directory not found: " + dir); | ||
} | ||
this.rotateTransportInfo = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-info-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "info", | ||
handleExceptions: false, | ||
}); | ||
this.rotateTransportHttp = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-http-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "http", | ||
handleExceptions: false, | ||
}); | ||
this.rotateTransportVerbose = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-verbose-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "verbose", | ||
handleExceptions: false, | ||
}); | ||
this.rotateTransportDebug = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-debug-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "debug", | ||
handleExceptions: false, | ||
}); | ||
this.rotateTransportSilly = new DailyRotateFile({ | ||
filename: path.join(dir, `${referenceCode}-silly-%DATE%.log`), | ||
dirname: dir, | ||
datePattern: datepattern || "YYYY-MM-DD", | ||
maxSize: maxsize || "20m", | ||
maxFiles: maxfiles || "3d", | ||
level: "silly", | ||
handleExceptions: false, | ||
}); | ||
this.logger = winston.createLogger({ | ||
format: ecsFormat(), | ||
transports: [ | ||
this.rotateTransportError, | ||
this.rotateTransportWarn, | ||
this.rotateTransportInfo, | ||
this.rotateTransportHttp, | ||
this.rotateTransportVerbose, | ||
this.rotateTransportDebug, | ||
this.rotateTransportSilly, | ||
new winston.transports.Console({ | ||
handleExceptions: true, | ||
format: winston.format.combine( | ||
winston.format.timestamp(), | ||
winston.format.colorize(), | ||
winston.format.prettyPrint(), | ||
winston.format.simple(), | ||
winston.format.printf( | ||
(info) => `[${info.timestamp}] ${info.level}: ${info.message}` | ||
) | ||
), | ||
}), | ||
], | ||
}); | ||
} | ||
write(log) { | ||
this.logger.log(log); | ||
} | ||
@@ -69,0 +121,0 @@ } |
@@ -23,2 +23,3 @@ const FileWriter = require("./FileWriter.js"); | ||
this.path = null; | ||
this.setReferenceCode(options.referenceCode) | ||
this.setPath(options.path); | ||
@@ -32,3 +33,10 @@ this.slackToken = | ||
this.fileWriter = new FileWriter(); | ||
this.fileWriter = new FileWriter( | ||
this.referenceCode, | ||
this.path, | ||
this.maxsize, | ||
this.maxfiles, | ||
this.datepattern | ||
); | ||
} | ||
@@ -81,2 +89,10 @@ /** | ||
/** | ||
* Set referenceCode value | ||
* @param {String} referenceCode | ||
*/ | ||
setReferenceCode(referenceCode) { | ||
this.referenceCode = referenceCode; | ||
} | ||
/** | ||
* Decide the operation to do with log | ||
@@ -109,6 +125,2 @@ * @param {JSON object} log | ||
log, | ||
this.path, | ||
this.maxsize, | ||
this.maxfiles, | ||
this.datepattern | ||
); | ||
@@ -115,0 +127,0 @@ } |
33431
15
815