mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	logging stuff to rotated files through simple-node-logger
This commit is contained in:
		
							
								
								
									
										21
									
								
								app.js
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								app.js
									
									
									
									
									
								
							@@ -1,13 +1,13 @@
 | 
				
			|||||||
const express = require('express');
 | 
					const express = require('express');
 | 
				
			||||||
const path = require('path');
 | 
					const path = require('path');
 | 
				
			||||||
const favicon = require('serve-favicon');
 | 
					const favicon = require('serve-favicon');
 | 
				
			||||||
const logger = require('morgan');
 | 
					 | 
				
			||||||
const cookieParser = require('cookie-parser');
 | 
					const cookieParser = require('cookie-parser');
 | 
				
			||||||
const bodyParser = require('body-parser');
 | 
					const bodyParser = require('body-parser');
 | 
				
			||||||
const helmet = require('helmet');
 | 
					const helmet = require('helmet');
 | 
				
			||||||
const session = require('express-session');
 | 
					const session = require('express-session');
 | 
				
			||||||
const FileStore = require('session-file-store')(session);
 | 
					const FileStore = require('session-file-store')(session);
 | 
				
			||||||
const os = require('os');
 | 
					const os = require('os');
 | 
				
			||||||
 | 
					const log = require('./services/log');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const indexRoute = require('./routes/index');
 | 
					const indexRoute = require('./routes/index');
 | 
				
			||||||
const loginRoute = require('./routes/login');
 | 
					const loginRoute = require('./routes/login');
 | 
				
			||||||
@@ -40,7 +40,12 @@ app.set('views', path.join(__dirname, 'views'));
 | 
				
			|||||||
app.set('view engine', 'ejs');
 | 
					app.set('view engine', 'ejs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
app.use(helmet());
 | 
					app.use(helmet());
 | 
				
			||||||
app.use(logger('dev'));
 | 
					
 | 
				
			||||||
 | 
					app.use((req, res, next) => {
 | 
				
			||||||
 | 
					    log.request(req);
 | 
				
			||||||
 | 
					    next();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
app.use(bodyParser.json());
 | 
					app.use(bodyParser.json());
 | 
				
			||||||
app.use(bodyParser.urlencoded({extended: false}));
 | 
					app.use(bodyParser.urlencoded({extended: false}));
 | 
				
			||||||
app.use(cookieParser());
 | 
					app.use(cookieParser());
 | 
				
			||||||
@@ -78,21 +83,15 @@ app.use('/api/password', passwordApiRoute);
 | 
				
			|||||||
app.use('/api/migration', migrationApiRoute);
 | 
					app.use('/api/migration', migrationApiRoute);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// catch 404 and forward to error handler
 | 
					// catch 404 and forward to error handler
 | 
				
			||||||
app.use(function (req, res, next) {
 | 
					app.use((req, res, next) => {
 | 
				
			||||||
    const err = new Error('Not Found');
 | 
					    const err = new Error('Not Found');
 | 
				
			||||||
    err.status = 404;
 | 
					    err.status = 404;
 | 
				
			||||||
    next(err);
 | 
					    next(err);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// error handler
 | 
					// error handler
 | 
				
			||||||
app.use(function (err, req, res, next) {
 | 
					app.use((err, req, res, next) => {
 | 
				
			||||||
    // set locals, only providing error in development
 | 
					    log.error(err.message);
 | 
				
			||||||
    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');
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require('./services/sync');
 | 
					require('./services/sync');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,19 +14,19 @@
 | 
				
			|||||||
    "debug": "~3.1.0",
 | 
					    "debug": "~3.1.0",
 | 
				
			||||||
    "ejs": "~2.5.7",
 | 
					    "ejs": "~2.5.7",
 | 
				
			||||||
    "electron": "^1.7.9",
 | 
					    "electron": "^1.7.9",
 | 
				
			||||||
 | 
					    "electron-debug": "^1.0.0",
 | 
				
			||||||
 | 
					    "electron-rebuild": "^1.6.0",
 | 
				
			||||||
    "express": "~4.16.2",
 | 
					    "express": "~4.16.2",
 | 
				
			||||||
    "express-session": "^1.15.6",
 | 
					    "express-session": "^1.15.6",
 | 
				
			||||||
    "express-sessions": "^1.0.6",
 | 
					    "express-sessions": "^1.0.6",
 | 
				
			||||||
    "fs-extra": "^4.0.2",
 | 
					    "fs-extra": "^4.0.2",
 | 
				
			||||||
    "helmet": "^3.9.0",
 | 
					    "helmet": "^3.9.0",
 | 
				
			||||||
    "ini": "^1.3.4",
 | 
					    "ini": "^1.3.4",
 | 
				
			||||||
    "morgan": "~1.9.0",
 | 
					 | 
				
			||||||
    "scrypt": "^6.0.3",
 | 
					    "scrypt": "^6.0.3",
 | 
				
			||||||
    "serve-favicon": "~2.4.5",
 | 
					    "serve-favicon": "~2.4.5",
 | 
				
			||||||
    "session-file-store": "^1.1.2",
 | 
					    "session-file-store": "^1.1.2",
 | 
				
			||||||
    "sqlite": "^2.8.0",
 | 
					    "simple-node-logger": "^0.93.30",
 | 
				
			||||||
    "electron-debug": "^1.0.0",
 | 
					    "sqlite": "^2.8.0"
 | 
				
			||||||
    "electron-rebuild": "^1.6.0"
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "devtron": "^1.1.0",
 | 
					    "devtron": "^1.1.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,9 +11,11 @@ if (!fs.existsSync(TRILIUM_DATA_DIR)) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const DOCUMENT_PATH = TRILIUM_DATA_DIR + "/document.db";
 | 
					const DOCUMENT_PATH = TRILIUM_DATA_DIR + "/document.db";
 | 
				
			||||||
const BACKUP_DIR = TRILIUM_DATA_DIR + "/backup";
 | 
					const BACKUP_DIR = TRILIUM_DATA_DIR + "/backup";
 | 
				
			||||||
 | 
					const LOG_DIR = TRILIUM_DATA_DIR + "/log";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
    TRILIUM_DATA_DIR,
 | 
					    TRILIUM_DATA_DIR,
 | 
				
			||||||
    DOCUMENT_PATH,
 | 
					    DOCUMENT_PATH,
 | 
				
			||||||
    BACKUP_DIR
 | 
					    BACKUP_DIR,
 | 
				
			||||||
 | 
					    LOG_DIR
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
							
								
								
									
										41
									
								
								services/log.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								services/log.js
									
									
									
									
									
										Normal file
									
								
							@@ -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-<DATE>.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
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Reference in New Issue
	
	Block a user