forked from brainfoolong/web-ftp-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogs.js
70 lines (62 loc) · 1.52 KB
/
logs.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
'use strict'
const path = require('path')
const db = require(path.join(__dirname, 'db'))
const logs = {}
/**
* Get all log messages
* @return []
*/
logs.get = function () {
const logs = db.get('logs').cloneDeep().value()
if (!logs.messages) {
return []
}
return logs.messages
}
/**
* Log a message
* @param {string} server
* @param {string} message
* @param {object=} params
* @param {string=} type
*/
logs.log = function (server, message, params, type) {
const logsDb = db.get('logs').cloneDeep().value()
if (!logsDb.messages) {
logsDb.messages = []
}
logsDb.messages = logsDb.messages.slice(-50)
const msg = {
'server': server,
'serverName': server ? require(path.join(__dirname, 'server')).get(server).getServerData().name : null,
'time': new Date(),
'message': message,
'params': params,
'type': type || 'info'
}
logsDb.messages.push(msg)
db.get('logs').set('messages', logsDb.messages).write()
// send to all listeners
for (let i = 0; i < logs.listeners.length; i++) {
logs.listeners[i].bulkSend('log', msg)
}
}
/**
* Log an error message
* @param {string} server
* @param {Error} err
*/
logs.logError = function (server, err) {
const e = new Error(err.message)
let msg = e.message
if (require(path.join(__dirname, 'config.js')).development) {
msg += ' | STACK: ' + e.stack
}
logs.log(server, msg, null, 'error')
}
/**
* The websocket users that listen for new log messages
* @type {WebSocketUser[]}
*/
logs.listeners = []
module.exports = logs