1
0
mirror of https://github.com/comatory/fb2iCal synced 2025-06-05 22:09:25 +02:00

feature: add loggers and save logs to DB when using Firebase

This commit is contained in:
Ondřej Synáček
2020-11-15 21:33:16 +01:00
parent 8afa1a9b3b
commit c55774eb39
5 changed files with 96 additions and 13 deletions

68
functions/logger.js Normal file
View File

@ -0,0 +1,68 @@
const winston = require('winston')
const expressWinston = require('express-winston')
const Transport = require('winston-transport')
class FirebaseTransport extends Transport {
constructor(options) {
super(options)
this._db = options.db
}
log(info, callback) {
try {
this._db.ref(`log-${new Date().getTime()}`).set(info)
callback(null, info)
this.emit('logged', info)
} catch (err) {
callback(error)
this.emit('error', error)
}
return info
}
}
const createRouteLogger = (db) => {
return expressWinston.logger({
transports: [
new FirebaseTransport({ db })
],
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
meta: true,
expressFormat: true,
})
}
const createErrorLogger = ({ db }) => {
return expressWinston.errorLogger({
transports: [
new FirebaseTransport({ db })
],
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
})
}
const createAppLogger = ({ db }) => {
return winston.createLogger({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new FirebaseTransport({ db }),
new winston.transports.Console(),
]
})
}
module.exports = {
createRouteLogger,
createErrorLogger,
createAppLogger,
}