forked from tristanls/logly
-
Notifications
You must be signed in to change notification settings - Fork 0
/
logly.js
110 lines (91 loc) · 2.69 KB
/
logly.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
var fs = require( 'fs' );
var os = require( 'os' );
exports.version =
JSON.parse( fs.readFileSync( __dirname + '/package.json' ) ).version;
var name = {};
var mode = {};
// because logly is a singleton, we save global settings as a hash
// using process.pid as keys
name[ process.pid ] = 'logly';
mode[ process.pid ] = 'standard';
var get_time = function(){
return (new Date).toJSON();
};
var HOST = os.hostname();
var format_message = function(mode, msg){
return '[' + get_time() + ']@' + HOST + ' ' + mode + ' ' + msg;
};
var logger = function( input, methodMode ) {
if ( typeof( input ) === "string" ) {
if ( methodMode == 'error' || methodMode == 'warn' ) {
console.error(format_message(methodMode, input));
} else if ( methodMode != 'standard' ) {
console.log(format_message(methodMode, input));
} else {
console.log(format_message('info', input));
}
} else if ( typeof( input ) === "function" ) {
input();
}
};
var debug = function( input ) {
if ( 'debug' == mode[ process.pid ] ) {
logger( input, 'debug' );
}
};
var log = function( input ) {
if ( 'standard' == mode[ process.pid ] || 'verbose' == mode[ process.pid ]
|| 'debug' == mode[ process.pid ] ) {
logger( input, 'standard' );
}
};
var error = function( input ) {
logger( input, 'error' );
};
var stderr = function( input ) {
if ( typeof( input ) === "string" ) {
process.stderr.write( input );
} else if ( typeof( input ) === "function" ) {
input();
}
};
var stdout = function( input ) {
if ( typeof( input ) === "string" ) {
process.stdout.write( input );
} else if ( typeof( input ) === "function" ) {
input();
}
};
var verbose = function( input ) {
if ( 'verbose' == mode[ process.pid ] || 'debug' == mode[ process.pid ] ) {
logger( input, 'verbose' );
}
};
var warn = function( input ) {
logger( input, 'warn' );
};
var log_req = function( req, input) {
if ( 'standard' == mode[ process.pid ] || 'verbose' == mode[ process.pid ]
|| 'debug' == mode[ process.pid ] ) {
input = input + " host:" + req.headers.host + " orig_host:" + req.headers['x-forwarded-for']
logger( input, 'standard' );
}
};
exports.mode = function( loglyMode ) {
if ( 'standard' === loglyMode || 'verbose' === loglyMode || 'debug' === loglyMode ) {
mode[ process.pid ] = loglyMode;
} else {
throw "Invalid logly mode ( should be one of: standard, verbose, debug )";
}
};
exports.name = function( applicationName ) {
name[ process.pid ] = applicationName;
};
exports.debug = debug;
exports.error = error;
exports.log = log;
exports.stdout = stdout;
exports.stderr = stderr;
exports.verbose = verbose;
exports.warn = warn;
exports.log_req = log_req;