From b4bb1b539e5df78940b02a8f077f221b8a63d037 Mon Sep 17 00:00:00 2001 From: azivner Date: Tue, 24 Oct 2017 22:04:52 -0400 Subject: [PATCH] logging stuff to rotated files through simple-node-logger --- app.js | 21 ++++++++++----------- package.json | 8 ++++---- services/data_dir.js | 4 +++- services/log.js | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 services/log.js diff --git a/app.js b/app.js index 257c7b921..e15965d1d 100644 --- a/app.js +++ b/app.js @@ -1,13 +1,13 @@ const express = require('express'); const path = require('path'); const favicon = require('serve-favicon'); -const logger = require('morgan'); const cookieParser = require('cookie-parser'); const bodyParser = require('body-parser'); const helmet = require('helmet'); const session = require('express-session'); const FileStore = require('session-file-store')(session); const os = require('os'); +const log = require('./services/log'); const indexRoute = require('./routes/index'); const loginRoute = require('./routes/login'); @@ -40,7 +40,12 @@ app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(helmet()); -app.use(logger('dev')); + +app.use((req, res, next) => { + log.request(req); + next(); +}); + app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); @@ -78,21 +83,15 @@ app.use('/api/password', passwordApiRoute); app.use('/api/migration', migrationApiRoute); // catch 404 and forward to error handler -app.use(function (req, res, next) { +app.use((req, res, next) => { const err = new Error('Not Found'); err.status = 404; next(err); }); // error handler -app.use(function (err, req, res, next) { - // set locals, only providing error in development - res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; - - // render the error page - res.status(err.status || 500); - res.render('error'); +app.use((err, req, res, next) => { + log.error(err.message); }); require('./services/sync'); diff --git a/package.json b/package.json index 5161c79d2..eccb5026e 100644 --- a/package.json +++ b/package.json @@ -14,19 +14,19 @@ "debug": "~3.1.0", "ejs": "~2.5.7", "electron": "^1.7.9", + "electron-debug": "^1.0.0", + "electron-rebuild": "^1.6.0", "express": "~4.16.2", "express-session": "^1.15.6", "express-sessions": "^1.0.6", "fs-extra": "^4.0.2", "helmet": "^3.9.0", "ini": "^1.3.4", - "morgan": "~1.9.0", "scrypt": "^6.0.3", "serve-favicon": "~2.4.5", "session-file-store": "^1.1.2", - "sqlite": "^2.8.0", - "electron-debug": "^1.0.0", - "electron-rebuild": "^1.6.0" + "simple-node-logger": "^0.93.30", + "sqlite": "^2.8.0" }, "devDependencies": { "devtron": "^1.1.0", diff --git a/services/data_dir.js b/services/data_dir.js index f26fd41fa..afeef7c29 100644 --- a/services/data_dir.js +++ b/services/data_dir.js @@ -11,9 +11,11 @@ if (!fs.existsSync(TRILIUM_DATA_DIR)) { const DOCUMENT_PATH = TRILIUM_DATA_DIR + "/document.db"; const BACKUP_DIR = TRILIUM_DATA_DIR + "/backup"; +const LOG_DIR = TRILIUM_DATA_DIR + "/log"; module.exports = { TRILIUM_DATA_DIR, DOCUMENT_PATH, - BACKUP_DIR + BACKUP_DIR, + LOG_DIR }; \ No newline at end of file diff --git a/services/log.js b/services/log.js new file mode 100644 index 000000000..31dbb4cec --- /dev/null +++ b/services/log.js @@ -0,0 +1,41 @@ +"use strict"; + +const fs = require('fs'); +const LOG_DIR = require('./data_dir').LOG_DIR; + +if (!fs.existsSync(LOG_DIR)) { + fs.mkdirSync(LOG_DIR, 0o700); +} + +const logger = require('simple-node-logger').createRollingFileLogger({ + errorEventName: 'error', + logDirectory: LOG_DIR, + fileNamePattern: 'trilium-.log', + dateFormat:'YYYY-MM-DD' +}); + +function info(message) { + logger.info(message); +} + +function error(message) { + logger.error(message); +} + +const requestBlacklist = [ "/api/audit", "/libraries", "/javascripts", "/images", "/stylesheets" ]; + +function request(req) { + for (const bl of requestBlacklist) { + if (req.url.startsWith(bl)) { + return; + } + } + + logger.info(req.method + " " + req.url); +} + +module.exports = { + info, + error, + request +}; \ No newline at end of file