diff --git a/.eslintrc b/.eslintrc index bc12af8..14d2fee 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,6 +1,7 @@ { "extends": "./node_modules/eslint-config/.eslintrc", "env": { - "node": true + "node": true, + "browser": false } } diff --git a/package.json b/package.json index 9a8db4d..82fd77f 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "compression": "=1.6.2", "connect-static-file": "=1.1.2", "express": "=4.14.0", - "helmet": "=2.3.0" + "express-winston": "=2.0.0", + "helmet": "=2.3.0", + "winston": "=2.2.0" }, "devDependencies": { "eslint": "=1.9.0", diff --git a/server.js b/server.js index a04ed7d..a33bb38 100644 --- a/server.js +++ b/server.js @@ -3,33 +3,46 @@ const staticFile = require('connect-static-file'); const compression = require('compression'); const helmet = require('helmet'); const path = require('path'); +const winston = require('winston'); +const expressWinston = require('express-winston'); const PORT = process.env.PORT || 5000; const SERVE_DIR = path.join(__dirname, '/site'); const PAGE_404 = path.join(SERVE_DIR, '.404.html'); - -const directory = /\/$/; - -const expressConfig = { +const EXPRESS_CONFIG = { dotfiles: 'ignore', index: false, redirect: true }; +const LOGGER_MESSAGE = '{{ req.url }}' + .concat('status:{{ res.statusCode }} ') + .concat('useragent:{{ req.headers["user-agent"] }} ') + .concat('time:{{ res.responseTime }}ms'); const app = express(); app.use(compression({ level: 9 })); app.use(helmet()); - +app.use(expressWinston.logger({ + transports: [ + new winston.transports.Console({ + colorize: true + }) + ], + meta: false, + msg: LOGGER_MESSAGE, + colorize: true, + statusLevels: true +})); app.use(function (request, response, next) { - if (directory.exec(request.url)) { + if (request.url.endsWith('/')) { request.url = path.join(request.url, 'index.html'); } next(); }); -app.use(express.static(SERVE_DIR, expressConfig)); +app.use(express.static(SERVE_DIR, EXPRESS_CONFIG)); app.use(function (request, response, next) { response.statusCode = 404;