/
main.js
executable file
·163 lines (137 loc) · 3.71 KB
/
main.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*jslint node:true, white:true */
"use strict";
/*!
* crafity-logging - Crafity's logging abstraction
* Copyright(c) 2011-2013 Crafity
* Copyright(c) 2011-2013 Bart Riemens
* Copyright(c) 2011-2013 Galina Slavova
* MIT Licensed
*/
/**
* Module dependencies.
*/
var ansi = require("ansi")
, ansiCursor = ansi(process.stdout)
, moment = require("moment")
;
/**
* Framework name.
*/
exports.fullname = 'crafity-logging';
/**
* Framework version.
*/
exports.version = '0.1.5';
/**
* Create a new logger instance.
*
* @param name The name of the logger
* @param category The category of the logger
* @param config More configuration options
* @return {*} A new logger instance
*/
exports.create = function (name, category, config) {
/**
* Module dependencies.
*/
var log4js = require('crafity-log4js')
, fs = require('crafity-filesystem')
;
/**
* Organize the parameters
*/
if (name === undefined && category === undefined && config === undefined) {
name = undefined;
category = undefined;
config = {};
} else if (typeof name === 'string' && typeof category === 'object' && config === undefined) {
config = category;
category = undefined;
} else if (typeof name === 'object' && category === undefined && config === undefined) {
config = name;
name = config.name;
category = config.category;
}
/**
* Variable declarations.
*/
var logger;
/**
* Initialize the appenders.
*/
config.appenders = (config.appenders || []).map(function (appender) {
appender.name = name || appender.name;
appender.category = category || appender.category;
appender.filename = appender.filename ||
(appender.path && fs.combine(process.cwd(), appender.path, appender.name + ".log"));
return appender;
});
/**
* Configure log4js, which is internally used.
*/
log4js.configure(config, { keep: config.keep !== false });
/**
* Get the logger and return it
*/
logger = log4js.getLogger(name);
logger.setLevel('ALL');
logger.name = name || "";
logger.appenders = log4js.appenders;
logger.http = {};
logger.http.logRequestResponse = function (req, res, err) {
var crafityColours = {
orange: "#E38418",
red: "#C21705",
brown: "#483432",
lightGray: "#525252",
gray: "#a1a1a1",
blue: "#7cb6e9",
white: "#D8D7D7"
};
ansiCursor
.hex(crafityColours.blue)
.write(moment().format("YYYYMMDD, HH:mm:ss.SSS ZZ")) //source: http://momentjs.com/docs/
.fg.reset()
.hex(crafityColours.brown).write(" - Client:")
.fg.reset()
.hex(crafityColours.white)
.write(req.client.remoteAddress + ":" + req.client.remotePort)
.fg.reset()
.hex(crafityColours.brown).write(", Method: ")
.fg.reset()
.hex(crafityColours.orange)
.write(req.method)
.fg.reset()
.hex(crafityColours.brown).write(", Status: ")
.fg.reset()
.hex(crafityColours.orange)
.write(res.statusCode ? res.statusCode.toString() : "?")
.fg.reset()
.hex(crafityColours.brown).write(", Url: ")
.fg.reset()
.hex(crafityColours.orange)
.write(req.url)
.fg.reset()
.hex(crafityColours.brown).write(", Host: ")
.fg.reset()
.hex(crafityColours.white)
.write(req.headers.host)
.fg.reset()
.hex(crafityColours.brown).write((req.headers && req.headers.referer) ? ", Referer: " : "")
.fg.reset()
.hex(crafityColours.white)
.write((req.headers && req.headers.referer) ? req.headers.referer : "")
.fg.reset()
.hex(crafityColours.brown).write(", UA: ")
.fg.reset()
.hex(crafityColours.white)
.write(req.headers["user-agent"])
.write("\n")
.fg.reset()
.hex(crafityColours.red).write(err ? "\nERROR: " : "")
.write(err ? (err.toString() + (err.stack ? err.stack + "\n" : "\n")) : "\n")
.fg.reset()
.reset();
};
return logger;
};