Skip to content

Instantly share code, notes, and snippets.

@scpedicini
Last active September 19, 2021 22:18
Show Gist options
  • Save scpedicini/29ddb1bd4008fd1d6454d8c86eb3f095 to your computer and use it in GitHub Desktop.
Save scpedicini/29ddb1bd4008fd1d6454d8c86eb3f095 to your computer and use it in GitHub Desktop.
Sqlite3 Winston Logger
// requirements
const winston = require('winston');
const winstonSqlite3Transport = require('./winston-sqlite3-transport');
class Logger {
winstonLogger;
constructor(db_file) {
this.winstonLogger = winston.createLogger({
level: 'debug',
format: winston.format.json(),
//format: winston.format.combine(winston.format.json(), winston.format.prettyPrint()),
// defaultMeta: { resource: 'renew' }, // you can set default values for columns not passed in the .log method
defaultMeta: { get timestamp() { return new Date().toISOString() } }, // getter computed at run-time
transports: [
new (winston.transports.Console)({
format: winston.format.combine(winston.format.colorize({all:true}),
winston.format.printf(info => `${new Date()}: ${info.level} - ${info.message}`) ),
}),
new winstonSqlite3Transport({
db: db_file, // A list of the sqlite columns to log. Defaults to ['level, 'message']
})
]
});
}
logWarning(message) {
this.logMessage('warn', message);
}
logInfo(message) {
this.logMessage('info', message);
}
logError(message) {
this.logMessage('error', message);
}
logMessage(level , message) {
this.winstonLogger.log({ level: level, message: message });
}
}
module.exports = Logger;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment