UNPKG

4.19 kBJavaScriptView Raw
1(function() {
2 var SEVERE, _, create, logger, mkdirp, path, pickLog, winston,
3 slice = [].slice;
4
5 _ = require('lodash');
6
7 path = require('path');
8
9 winston = require('winston');
10
11 mkdirp = require('mkdirp');
12
13 logger = new winston.Logger({
14 transports: [new winston.transports.Console()]
15 });
16
17 exports.SEVERE = SEVERE = 10;
18
19 exports.pickLog = pickLog = function(cfgpath, name, cb) {
20 var logDirPath, logPath;
21 logDirPath = path.join(path.dirname(cfgpath), 'logs');
22 logPath = path.join(logDirPath, name + ".log");
23 return mkdirp(logDirPath, function(err) {
24 return cb(err, logPath);
25 });
26 };
27
28 exports.init = function(cfgpath, name, level, cb) {
29 return pickLog(cfgpath, name, function(err, logPath) {
30 var returnLevel;
31 if (err != null) {
32 return cb(err);
33 }
34 logger.add(winston.transports.File, {
35 filename: logPath,
36 maxsize: 50000,
37 maxFiles: 3,
38 tailable: true
39 });
40 returnLevel = 0;
41 logger.level = (level = 'verbose') ? 'debug' : 'info';
42 return cb(null, create(level));
43 });
44 };
45
46 exports.create = create = function(level) {
47 var debug, error, log, panic, warn;
48 return {
49 exit: function() {
50 return process.exit(Math.max(0, returnLevel - SEVERE + 1));
51 },
52 level: level,
53 debug: debug = logger.debug,
54 log: log = logger.info,
55 warn: warn = logger.warn,
56 error: error = logger.error,
57 panic: panic = function() {
58 var args;
59 args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
60 error.apply(null, args);
61 return process.exit(1);
62 },
63 setLevel: function(level) {
64 return logger.level = level;
65 },
66 prettyConfig: function(level, err) {
67 var returnLevel;
68 returnLevel = Math.max(returnLevel, level);
69 switch (err != null ? err.code : void 0) {
70 case 'ENOENT':
71 return warn("Couldn't access file \"" + err.path + "\".");
72 default:
73 return warn('Unexpected configuration error:', err);
74 }
75 },
76 prettyListen: function(level, err, config) {
77 var returnLevel;
78 returnLevel = Math.max(returnLevel, level);
79 switch (err != null ? err.code : void 0) {
80 case 'EADDRINUSE':
81 return warn("Something already listening on port " + config.listenPort + ".");
82 default:
83 return warn('Unexpected command error', err);
84 }
85 },
86 prettyBacktalk: function(level, err, config) {
87 var ref, returnLevel;
88 returnLevel = Math.max(returnLevel, level);
89 switch (false) {
90 case !_.isString(err):
91 return warn(err);
92 case (err != null ? err.code : void 0) !== 'ECONNREFUSED':
93 return warn("Unable to connect to server at \"" + config.host + ":" + config.backPort + "\".");
94 case (err != null ? (ref = err.message) != null ? ref.indexOf('CRYPT') : void 0 : void 0) === -1:
95 return warn('Unexpected backchannel encryption error:', err);
96 default:
97 return warn('Unexpected backchannel error:', err);
98 }
99 },
100 prettyTunnel: function(level, err, config) {
101 var ref, returnLevel;
102 returnLevel = Math.max(returnLevel, level);
103 switch ((ref = err.error) != null ? ref.code : void 0) {
104 case 'ECONNREFUSED':
105 return warn("Unable to connect to local \"" + config.local.host + ":" + config.local.port + "\".");
106 default:
107 return warn("Unexpected tunnel error", err);
108 }
109 },
110 prettyProxy: function(level, regId, err, config) {
111 var returnLevel;
112 returnLevel = Math.max(returnLevel, level);
113 switch (err != null ? err.code : void 0) {
114 case 'EADDRINUSE':
115 return warn("Unable to start: address " + config.proxyPort + " already in use.");
116 default:
117 if (regId != null) {
118 return warn("Unexpected proxy error for " + regId, err);
119 } else {
120 return warn("Unexpected proxy error", err);
121 }
122 }
123 }
124 };
125 };
126
127}).call(this);