improve error logging

This commit is contained in:
les
2021-07-08 20:41:56 +02:00
parent 1cd43f8992
commit 9cf2b41f7c
14 changed files with 35 additions and 37 deletions

View File

@@ -118,7 +118,7 @@ const eventController = {
order: [[Resource, 'id', 'DESC']] order: [[Resource, 'id', 'DESC']]
}) })
} catch (e) { } catch (e) {
log.error(e) log.error('[EVENT]', e)
return res.sendStatus(400) return res.sendStatus(400)
} }
@@ -194,7 +194,7 @@ const eventController = {
const notifier = require('../../notifier') const notifier = require('../../notifier')
notifier.notifyEvent('Create', event.id) notifier.notifyEvent('Create', event.id)
} catch (e) { } catch (e) {
log.error(e) log.error('[EVENT]', e)
res.sendStatus(404) res.sendStatus(404)
} }
}, },
@@ -334,7 +334,7 @@ const eventController = {
notifier.notifyEvent('Create', event.id) notifier.notifyEvent('Create', event.id)
} }
} catch (e) { } catch (e) {
log.error(e) log.error('[EVENT ADD]', e)
res.sendStatus(400) res.sendStatus(400)
} }
}, },
@@ -419,6 +419,7 @@ const eventController = {
} }
const notifier = require('../../notifier') const notifier = require('../../notifier')
await notifier.notifyEvent('Delete', event.id) await notifier.notifyEvent('Delete', event.id)
log.debug('[EVENT REMOVED]', event.title)
await event.destroy() await event.destroy()
res.sendStatus(200) res.sendStatus(200)
} else { } else {
@@ -474,7 +475,8 @@ const eventController = {
{ model: Place, required: true, attributes: ['id', 'name', 'address'] } { model: Place, required: true, attributes: ['id', 'name', 'address'] }
] ]
}).catch(e => { }).catch(e => {
log.error(e) log.error('[EVENT]', e)
return []
}) })
return events.map(e => { return events.map(e => {

View File

@@ -42,7 +42,7 @@ const oauthController = {
delete client.id delete client.id
res.json(client) res.json(client)
} catch (e) { } catch (e) {
log.error(e) log.error('[OAUTH CLIENT]', e)
res.status(400).json(e) res.status(400).json(e)
} }
}, },

View File

@@ -103,7 +103,7 @@ const settingsController = {
settingsController[is_secret ? 'secretSettings' : 'settings'][key] = value settingsController[is_secret ? 'secretSettings' : 'settings'][key] = value
return true return true
} catch (e) { } catch (e) {
log.error(e) log.error('[SETTING SET]', e)
return false return false
} }
}, },
@@ -129,7 +129,7 @@ const settingsController = {
.png({ quality: 90 }) .png({ quality: 90 })
.toFile(baseImgPath + '.png', async (err, info) => { .toFile(baseImgPath + '.png', async (err, info) => {
if (err) { if (err) {
log.error(err) log.error('[LOGO]', err)
} }
const image = await readFile(baseImgPath + '.png') const image = await readFile(baseImgPath + '.png')
const favicon = await toIco([image], { sizes: [64], resize: true }) const favicon = await toIco([image], { sizes: [64], resize: true })

View File

@@ -103,7 +103,7 @@ const userController = {
mail.send(config.admin_email, 'admin_register', { user, config }) mail.send(config.admin_email, 'admin_register', { user, config })
res.sendStatus(200) res.sendStatus(200)
} catch (e) { } catch (e) {
log.error('Registration error: "%s"', e) log.error('Registration error:', e)
res.status(404).json(e) res.status(404).json(e)
} }
}, },
@@ -116,7 +116,7 @@ const userController = {
mail.send(user.email, 'user_confirm', { user, config }, req.settings.locale) mail.send(user.email, 'user_confirm', { user, config }, req.settings.locale)
res.json(user) res.json(user)
} catch (e) { } catch (e) {
log.error('User creation error: %s', e) log.error('User creation error:', e)
res.status(404).json(e) res.status(404).json(e)
} }
}, },
@@ -127,7 +127,7 @@ const userController = {
user.destroy() user.destroy()
res.sendStatus(200) res.sendStatus(200)
} catch (e) { } catch (e) {
log.error('User removal error: "%s"', e) log.error('User removal error:"', e)
res.status(404).json(e) res.status(404).json(e)
} }
} }

View File

@@ -145,7 +145,7 @@ api.use((req, res) => res.sendStatus(404))
// Handle 500 // Handle 500
api.use((error, req, res, next) => { api.use((error, req, res, next) => {
log.error(error) log.error('[API ERROR]', error)
res.status(500).send('500: Internal Server Error') res.status(500).send('500: Internal Server Error')
}) })

View File

@@ -61,7 +61,7 @@ const mail = {
} }
return email.send(msg) return email.send(msg)
.catch(e => { .catch(e => {
log.error('Error sending email => %s', e) log.error('[MAIL]', e)
}) })
} }
} }

View File

@@ -34,7 +34,7 @@ oauth.use((req, res) => res.sendStatus(404))
oauth.use((err, req, res, next) => { oauth.use((err, req, res, next) => {
const error_msg = err.toString() const error_msg = err.toString()
log.error(error_msg) log.error('[OAUTH USE]', error_msg)
res.status(500).send(error_msg) res.status(500).send(error_msg)
}) })

View File

@@ -8,9 +8,7 @@ const config = require('config')
try { try {
mkdirp.sync(config.upload_path + '/thumb') mkdirp.sync(config.upload_path + '/thumb')
} catch (e) { } catch (e) {}
log.error(e)
}
const DiskStorage = { const DiskStorage = {
_handleFile (req, file, cb) { _handleFile (req, file, cb) {
@@ -25,11 +23,11 @@ const DiskStorage = {
let onError = false let onError = false
const err = e => { const err = e => {
if (onError) { if (onError) {
log.error(err) log.error('[UPLOAD]', err)
return return
} }
onError = true onError = true
log.error(e) log.error('[UPLOAD]', e)
req.err = e req.err = e
cb(null) cb(null)
} }

View File

@@ -126,7 +126,7 @@ const Helpers = {
return res.data return res.data
}) })
.catch(e => { .catch(e => {
log.error(`${URL}: ${e}`) log.error(`get Actor ${URL}`, e)
return false return false
}) })

View File

@@ -140,7 +140,7 @@ router.use((req, res) => {
// Handle 500 // Handle 500
router.use((error, req, res, next) => { router.use((error, req, res, next) => {
log.error(error) log.error('[WEBFINGER]', error)
res.status(500).send('500: Internal Server Error') res.status(500).send('500: Internal Server Error')
}) })

View File

@@ -163,8 +163,8 @@ module.exports = {
})) }))
} }
} catch (e) { } catch (e) {
log.error(e) log.error('[Import URL]', e)
res.status(400).json(e.toString) res.status(400).json(e.toString())
} }
}, },

View File

@@ -1,10 +1,14 @@
const { createLogger, transports, format } = require('winston') const { createLogger, transports, format } = require('winston')
const DailyRotateFile = require('winston-daily-rotate-file') const DailyRotateFile = require('winston-daily-rotate-file')
const dayjs = require('dayjs') // const dayjs = require('dayjs')
const config = require('config') const config = require('config')
const gancioFormat = format.printf(({ timestamp, level, message, error }) => { const gancioFormat = format.printf(info => {
return `${dayjs(timestamp).format('DD MMM YYYY HH:mm:ss')} ${level}: ${message}` if (info.stack) {
return `${info.timestamp} ${info.level}: ${info.message} \r\n${info.stack}`
} else {
return `${info.timestamp} ${info.level}: ${info.message}`
}
}) })
const logger = createLogger({ const logger = createLogger({
@@ -12,15 +16,11 @@ const logger = createLogger({
transports: process.env.NODE_ENV !== 'production' transports: process.env.NODE_ENV !== 'production'
? [new transports.Console( ? [new transports.Console(
{ {
handleExceptions: true,
handleRejections: true,
level: 'debug', level: 'debug',
format: format.combine(format.errors({ stack: true }), format.timestamp(), format.colorize(), format.splat(), gancioFormat) format: format.combine(format.splat(), format.timestamp(), format.colorize(), gancioFormat)
} }
)] )]
: [new DailyRotateFile({ : [new DailyRotateFile({
handleExceptions: true,
handleRejections: true,
level: config.log_level || 'info', level: config.log_level || 'info',
filename: config.log_path + '/gancio.%DATE%.log', filename: config.log_path + '/gancio.%DATE%.log',
symlinkName: 'gancio.log', symlinkName: 'gancio.log',
@@ -28,14 +28,12 @@ const logger = createLogger({
zippedArchive: true, zippedArchive: true,
maxSize: '10m', maxSize: '10m',
maxFiles: '10d', maxFiles: '10d',
format: format.combine(format.timestamp(), format.splat(), gancioFormat) format: format.combine(format.timestamp(), gancioFormat)
}), }),
new transports.Console( new transports.Console(
{ {
handleExceptions: true,
handleRejections: true,
level: config.log_level || 'info', level: config.log_level || 'info',
format: format.combine(format.timestamp(), format.splat(), format.colorize(), gancioFormat) format: format.combine(format.timestamp(), format.colorize(), gancioFormat)
} }
)] )]
}) })

View File

@@ -51,7 +51,7 @@ const notifier = {
await notifier.sendNotification(notification, event) await notifier.sendNotification(notification, event)
notification.event_notification.status = 'sent' notification.event_notification.status = 'sent'
} catch (err) { } catch (err) {
log.error(err) log.error('[NOTIFY EVENT]', err)
notification.event_notification.status = 'error' notification.event_notification.status = 'error'
} }
return notification.event_notification.save() return notification.event_notification.save()
@@ -71,7 +71,7 @@ const notifier = {
e.status = 'sent' e.status = 'sent'
return e.save() return e.save()
} catch (err) { } catch (err) {
log.error(err) log.error('[NOTIFY]', err)
e.status = 'error' e.status = 'error'
e.error = err e.error = err
return e.save() return e.save()

View File

@@ -61,7 +61,7 @@ app.use('/oauth', oauth)
// // Handle 500 // // Handle 500
app.use((error, req, res, next) => { app.use((error, req, res, next) => {
log.error(error) log.error('[ERROR]', error)
res.status(500).send('500: Internal Server Error') res.status(500).send('500: Internal Server Error')
}) })