1542f7e5cb440cb6e1859e23c9b15be68f264a7c
[motion.git] / server / config / logger.js
1 var winston = require('winston');
2 var path = require('path');
3 var config = require('./environment');
4
5 winston.emitErrs = true;
6
7 var debug = new winston.Logger({
8   transports: [
9     new winston.transports.Console({
10       level: 'debug',
11       handleExceptions: true,
12       json: false,
13       colorize: true
14     })
15   ]
16 });
17
18 if (config.logging.debugToFile) {
19   debug.add(
20     winston.transports.File, {
21       name: 'debug-file',
22       level: 'debug',
23       filename: config.logging.debug,
24       handleExceptions: true,
25       json: true,
26       maxsize: 5242880, //5MB
27       maxFiles: 5,
28       colorize: false
29     }
30   );
31 }
32
33 var info = new winston.Logger({
34   transports: [
35     new winston.transports.File({
36       name: 'info-file',
37       level: 'info',
38       filename: config.logging.info,
39       handleExceptions: true,
40       json: true,
41       maxsize: 5242880, //5MB
42       maxFiles: 5,
43       colorize: false
44     }),
45     new winston.transports.Console({
46       level: 'info',
47       handleExceptions: true,
48       json: false,
49       colorize: true
50     })
51   ]
52 });
53
54 var warn = new winston.Logger({
55   transports: [
56     new winston.transports.File({
57       name: 'warn-file',
58       level: 'warn',
59       filename: config.logging.warn,
60       handleExceptions: true,
61       json: true,
62       maxsize: 5242880, //5MB
63       maxFiles: 5,
64       colorize: false
65     }),
66     new winston.transports.Console({
67       level: 'warn',
68       handleExceptions: true,
69       json: false,
70       colorize: true
71     })
72   ]
73 });
74
75 var error = new winston.Logger({
76   transports: [
77     new winston.transports.File({
78       name: 'error-file',
79       level: 'error',
80       filename: config.logging.error,
81       handleExceptions: true,
82       json: true,
83       maxsize: 5242880, //5MB
84       maxFiles: 5,
85       colorize: false
86     }),
87     new winston.transports.Console({
88       level: 'error',
89       handleExceptions: true,
90       json: false,
91       colorize: true
92     })
93   ]
94 });
95
96 var loggers = {
97   debug: function(msg, callback) {
98     debug.debug(msg, callback);
99   },
100   info: function(msg, callback) {
101     info.info(msg, callback);
102   },
103   warn: function(msg, callback) {
104     warn.warn(msg, callback);
105   },
106   error: function(msg, callback) {
107     error.error(msg, callback);
108   },
109   log: function(level, msg, callback) {
110     var lvl = exports[level];
111     lvl(msg, callback);
112   }
113 };
114
115 module.exports = loggers;
116 module.exports.stream = {
117   write: function(message, encoding) {
118     loggers.info(message);
119   }
120 };