Would like to hear a feedback from you!
As of performance, let's address why "pino" is faster than console.log. Pino avoids using the console directly, as it is designed for the node environment and appears to utilize stdout.write for output. This approach gives Pino a performance advantage in benchmarks. As of now, "halua" is yet to be optimized. Your comment prompted me to conduct a quick benchmark tho. If you're interested, here are the results for 10_000 iterations:
// halua (console): 358ms (NewTextHandler(console.info))
// pino: 233ms
// halua (stdout): 253ms (NewTextHandler((data) => process.stdout.write(data)))
There's also JSON handler in halua, which is 10%-20% slower than text handler
import {Level, halua, NewTextHandler, NewJSONHandler, NewWebConsoleHandler} from 'halua'
// an array of handlers that would accept logs
let handlers = [
NewJSONHandler(writeToZipArchive, {level: Level.Info}), // writes to client-size archive, only logs that are Info-Level or higher
NewTextHandler(sendToServer, {level: Level.Notice}), // writes to server, only logs tat are Notice-level or higher
NewTextHandler(sendUserAction, {level: Level.Info + 1}), // we will log user actions on a different level, so that it will be easy to filter
NewTextHandler(sendToErrorMonitoringSystem, {level: Level.Fatal}) // writes to monitoring system
]if (debug) {
handlers.push(NewWebConsoleHandler(self.console)) // writes to web / nodejs console
}// now we have to apply the handlers we created
let logger = halua.New(handlers)
// or
halua.setHandler(handlers)
// later, you may call .New on any logger instance to get a new instance