Browse Source

feat(logging): add option to configure JSON logging (#5022)

* fix: Use logger for logs using console logging

* feat: Add option to configure JSON logging

* fix: use generic logFormat instead of json specific

* fix: use logFormat for docker config

* fix: use logFormat to build winston formatters

Co-authored-by: Nicolas Giard <github@ngpixel.com>
pull/5044/head
Marián Skrip 2 years ago
committed by GitHub
parent
commit
2815f38c52
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 9 deletions
  1. 7
      config.sample.yml
  2. 1
      dev/build/config.yml
  3. 2
      server/core/kernel.js
  4. 21
      server/core/logger.js
  5. 2
      server/modules/storage/git/storage.js

7
config.sample.yml

@ -108,6 +108,13 @@ bindIP: 0.0.0.0
logLevel: info
# ---------------------------------------------------------------------
# Log Format
# ---------------------------------------------------------------------
# Output format for logging, possible values: default, json
logFormat: default
# ---------------------------------------------------------------------
# Offline Mode
# ---------------------------------------------------------------------

1
dev/build/config.yml

@ -16,4 +16,5 @@ ssl:
domain: $(LETSENCRYPT_DOMAIN)
subscriberEmail: $(LETSENCRYPT_EMAIL)
logLevel: info
logFormat: $(LOG_FORMAT)
ha: $(HA_ACTIVE)

2
server/core/kernel.js

@ -19,7 +19,7 @@ module.exports = {
} catch (err) {
WIKI.logger.error('Database Initialization Error: ' + err.message)
if (WIKI.IS_DEBUG) {
console.error(err)
WIKI.logger.error(err)
}
process.exit(1)
}

21
server/core/logger.js

@ -6,14 +6,21 @@ const winston = require('winston')
module.exports = {
loggers: {},
init(uid) {
let logger = winston.createLogger({
const loggerFormats = [
winston.format.label({ label: uid }),
winston.format.timestamp()
]
if (WIKI.config.logFormat === 'json') {
loggerFormats.push(winston.format.json())
} else {
loggerFormats.push(winston.format.colorize())
loggerFormats.push(winston.format.printf(info => `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`))
}
const logger = winston.createLogger({
level: WIKI.config.logLevel,
format: winston.format.combine(
winston.format.colorize(),
winston.format.label({ label: uid }),
winston.format.timestamp(),
winston.format.printf(info => `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`)
)
format: winston.format.combine(...loggerFormats)
})
// Init Console (default)

2
server/modules/storage/git/storage.js

@ -73,7 +73,7 @@ module.exports = {
mode: 0o600
})
} catch (err) {
console.error(err)
WIKI.logger.error(err)
throw err
}
}

Loading…
Cancel
Save