diff --git a/package.json b/package.json index 072586c..72f563c 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "express": "^4.13.3", "express-jwt": "^5.0.0", "express-session": "^1.11.3", + "express-winston": "^2.4.0", "fast-json-patch": "^1.0.0", "filendir": "^1.0.0", "font-awesome": ">=4.1.0", diff --git a/server/components/logger/logger.js b/server/components/logger/logger.js index 3ab19aa..85ecc32 100644 --- a/server/components/logger/logger.js +++ b/server/components/logger/logger.js @@ -4,6 +4,14 @@ var winston = require('winston'); -winston.add(winston.transports.File, {filename: './logs/server.log', json: false, colorize: true}); +import config from '../../config/environment'; + +winston.add(winston.transports.File, { + filename: config.paths.local_server_logfile, + json: false, + colorize: true, + maxsize: '10485760', + maxFiles: '10' +}); module.exports = winston; diff --git a/server/config/environment/shared.js b/server/config/environment/shared.js index 4f9949e..58c041a 100644 --- a/server/config/environment/shared.js +++ b/server/config/environment/shared.js @@ -12,6 +12,8 @@ exports = module.exports = { }, paths: { + local_server_logfile: './logs/server.log', + local_express_server_logfile: './logs/server-api.log', ansible_projects: '/opt/ansible-projects', ansible_projects_arhive: '/archive', // relative to projects folder ansible_custom_api_local: './helpers/AnsibleAPI.py', diff --git a/server/config/express.js b/server/config/express.js index c4f938a..b4de200 100644 --- a/server/config/express.js +++ b/server/config/express.js @@ -20,6 +20,8 @@ import session from 'express-session'; import connectMongo from 'connect-mongo'; import mongoose from 'mongoose'; var MongoStore = connectMongo(session); +var winston = require('winston'), + expressWinston = require('express-winston'); export default function(app) { var env = app.get('env'); @@ -46,6 +48,22 @@ export default function(app) { app.use(cookieParser()); app.use(passport.initialize()); + app.use(expressWinston.logger({ + transports: [ + new winston.transports.File({ + json: false, + colorize: true, + filename: config.paths.local_express_server_logfile, + maxsize: '10485760', + maxFiles: '10' + }) + ], + meta: true, // optional: control whether you want to log the meta data about the request (default to true) + msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}" + expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true + colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red). + ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response + })); // Persist sessions with MongoStore / sequelizeStore // We need to enable sessions for passport-twitter because it's an