-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLogger.jsxinc
159 lines (141 loc) · 3.28 KB
/
Logger.jsxinc
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
/**
* @author Scott Lewis <[email protected]>
* @copyright 2017 Scott Lewis
* @version 1.0.0
* @url http://github.com/iconifyit
*/
/**
* Create a new logger instance.
* @param name
* @param folder
* @constructor
*/
function Logger(name, folder) {
/**
* Default settings for the logger.
* @type {{folder: string}}
*/
this.defaults = {
folder: "/var/log"
}
/**
* The log folder object.
* @type {Folder}
*/
this.folder = new Folder(folder || this.defaults.folder);
// Create the log folder if not exists.
if (! this.folder.exists) {
this.folder.create();
}
/**
* Format date into a filename-friendly format.
* @param date
* @returns {string}
*/
function dateFormat(date) {
var d = new Date(date),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}
/**
* The log file.
* @type {File}
*/
this.file = new File(
this.folder.absoluteURI + "/" + name + "-" + dateFormat(new Date().getTime()) + ".log"
);
};
/**
* Logger prototype.
* @type {{
* types: {
* INFO: string,
* WARN: string,
* ERROR: string
* },
* info: Logger.info,
* warn: Logger.warn,
* error: Logger.error,
* log: Logger.log,
* remove: Logger.remove,
* create: Logger.create
* }}
*/
Logger.prototype = {
/**
* Log message types.
*/
types: {
INFO : localize({en_US: "INFO"}),
WARN : localize({en_US: "WARN"}),
ERROR : localize({en_US: "ERROR"}),
INSPECT : localize({en_US: "INSPECT"})
},
/**
* Add info message to log.
* @param message
*/
info : function(message) {
this.log(message, this.types.INFO);
},
/**
* Add warning message to log.
* @param message
*/
warn : function(message) {
this.log(message, this.types.WARN);
},
/**
* Add error message to log.
* @param message
*/
error : function(message) {
this.log(message, this.types.ERROR);
},
/**
* Add message to log.
* @param message
*/
log : function(message, type) {
Utils.write_file(
this.file.absoluteURI,
"[" + this.types[type] + "][" + new Date().toUTCString() + "] " + message
);
},
/**
* Delete log file.
* @returns {*|Array}
*/
remove : function() {
if (this.file.exists) {
return this.file.remove();
}
},
/**
* Create the log file.
* @param message
*/
create : function() {
if (! this.file.exists) {
return this.file.create();
}
},
/**
* Prints an object to the log.
* @param obj
*/
inspect: function(obj) {
for (key in obj) {
try {
this.log(key + ' : ' + obj[key], this.types.INSPECT);
}
catch(e) {
this.log(key + ' : [' + localize({en_US: 'Internal Error'}) + ']', this.types.INSPECT);
}
}
}
};