-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.js
39 lines (33 loc) · 1.04 KB
/
logger.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var StatsD = require('node-statsd');
var FileStreamRotator = require('file-stream-rotator');
var fs = require('fs');
var morgan = require('morgan');
var responseTime = require('response-time');
module.exports.log = (app) => {
var stats = new StatsD();
var logDirectory = __dirname + '/log';
// Ensure log directory exists
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);
// create a rotating write stream
var accessLogStream = FileStreamRotator.getStream({
date_format: 'YYYYMMDD',
filename: logDirectory + '/access-%DATE%.log',
frequency: 'daily',
verbose: false
});
// setup the logger
app.use(morgan('combined', {stream: accessLogStream}));
if (process.env.NODE_ENV == 'development')
app.use(morgan('dev'));
// Error handler
stats.socket.on('error', function (error) {
console.error(error.stack)
});
// Config section
app.use(responseTime(function (req, res, time) {
var stat = (req.method + req.url).toLowerCase()
.replace(/[:\.]/g, '')
.replace(/\//g, '_')
stats.timing(stat, time)
}));
}