Hawk
Error and logs framework for Soin Labs projects.
How to use
For getting a simple use of Hawk, follow the steps bellow:
-
Export the Hawk constructor and make an instance:
const { Hawk } = require("@soinlabs/hawk");
const customizedHawk = new Hawk({
logsPath: "yourWorkspace/route/example/logsDirectory",
slackToken: "yourWebhookChannelURL",
appName: "yourApplicationName",
optionalSign: "optionalBenchmark",
});
-
Use your Hawk instance to perform your logs
customizedHawk.log("My first log");
const newError = customizedHawk.CreateElasticError("message", 300);
customizedHawk.log(newError);
const { Logger } = require("@soinlabs/hawk");
customizedHawk.log("My first log", Logger.SILLY);
-
Some error and logs handling utilities
const { Logger, LoggedError } = require('@soinlabs/hawk')
const LoggingLevels = {
error: Logger.ERROR,
warn: Logger.WARN,
info: Logger.INFO,
http: Logger.HTTP,
verbose: Logger.VERBOSE,
debug: Logger.DEBUG,
silly: Logger.SILLY,
};
const ErrorLevels = {
low: LoggedError.LOW_LEVEL,
medium: LoggedError.MEDIUM_LEVEL,
high: LoggedError.HIGH_LEVEL,
};
function sendError(message, status, errorLevel = ErrorLevels.low) {
const error = customizedHawk.CreateElasticError(message, status);
error.setErrorLevel(errorLevel);
customizedHawk.log(error, LoggingLevels.error);
throw error;
}
function sendWarning(msg) {
customizedHawk.log(
{ message: msg, referenceCode: customizedHawk.getReferenceCode() },
LoggingLevels.warn
)
}
function logError(message, code, errorLevel = ErrorLevels.low) {
const error = customizedHawk.CreateElasticError(message, code)
customizedHawk.log(error, LoggingLevels.error)
}
...
sendError("No id provided", 400);
sendWarning('Bad request')
Another alternatives
You could do some things like these:
-
Throw LoggedError
throw new LoggedError()
.setMessage(`Error captured by hawk: ${message}`)
.setReferenceCode("myFile.js")
.setErrorLevel(LoggedError.HIGH_LEVEL)
.setToLog(true)
.setToSlack(true);
throw new LoggedError({
message: `Error captured by hawk: ${message}`,
status: 401,
toLog: true,
toElastic: false,
toSlack: true,
newField: "yourNewFieldValue",
});