Skip to content

Commit 062ec8f

Browse files
committed
Log Events are now in sqlite3 database
1 parent f954458 commit 062ec8f

File tree

8 files changed

+448
-38
lines changed

8 files changed

+448
-38
lines changed

app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
});
5151

5252
morgan.format('mydate', function() {
53-
var df = require('console-stamp/node_modules/dateformat');
53+
var df = require('dateformat');
5454
return df(new Date(), 'HH:MM:ss.l');
5555
});
5656

client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ nconf
3131
console.log(nconf.get('APP_NAME') + ' ' + nconf.get('APP_VERSION'));
3232

3333
morgan.format('mydate', function() {
34-
var df = require('console-stamp/node_modules/dateformat');
34+
var df = require('dateformat');
3535
return df(new Date(), 'HH:MM:ss.l');
3636
});
3737

controllers/view-log.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,25 @@
22
"use strict";
33

44
var async = require('async'),
5+
data = require('../services/data'),
56
errorResult = require('../services/error-result'),
67
express = require('express'),
7-
router = express.Router(),
8-
syncStruct = require('../services/sync-struct');
8+
router = express.Router();
9+
10+
function fetchData(db, callback) {
11+
var data = {
12+
'eventlog': []
13+
};
14+
15+
db.serialize(function() {
16+
db.each("SELECT * FROM log_events ORDER BY time DESC LIMIT 100", function(err, row) {
17+
row.headers = JSON.parse(row.headers);
18+
data.eventlog.push(row);
19+
}, function () {
20+
callback(null, data);
21+
});
22+
});
23+
}
924

1025
function processResponse(req, res, data) {
1126
switch (req.accepts('html', 'json')) {
@@ -28,7 +43,10 @@
2843
router.get('/', function (req, res) {
2944
async.waterfall([
3045
function (callback) {
31-
syncStruct.watchStruct('data', callback);
46+
data.getDb(callback);
47+
},
48+
function (db, callback) {
49+
fetchData(db, callback);
3250
},
3351
function (data) {
3452
processResponse(req, res, data);

database.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"defaultEnv": "dev",
3+
"dev": {
4+
"driver": "sqlite3",
5+
"filename": "data/data.db"
6+
}
7+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
var dbm;
4+
var type;
5+
var seed;
6+
7+
/**
8+
* We receive the dbmigrate dependency from dbmigrate initially.
9+
* This enables us to not have to rely on NODE_PATH.
10+
*/
11+
exports.setup = function(options, seedLink) {
12+
dbm = options.dbmigrate;
13+
type = dbm.dataType;
14+
seed = seedLink;
15+
};
16+
17+
exports.up = function(db, callback) {
18+
db.createTable('log_events', {
19+
id: { type: 'int', primaryKey: true },
20+
eventtype: 'text',
21+
htmltext: 'text',
22+
secs: 'int',
23+
time: 'text',
24+
headers: 'text'
25+
}, callback);
26+
};
27+
28+
exports.down = function(db, callback) {
29+
db.dropTable('log_events', callback);
30+
};
31+
32+
exports._meta = {
33+
"version": 1
34+
};

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@
2121
"body-parser": "^1.17.2",
2222
"console-stamp": "^0.2.5",
2323
"cors": "^2.8.3",
24+
"db-migrate": "^0.10.0-beta.20",
25+
"db-migrate-sqlite3": "^0.2.1",
2426
"express": "^4.15.3",
2527
"express-handlebars": "^3.0.0",
2628
"moment": "^2.18.1",
2729
"morgan": "^1.8.2",
2830
"nconf": "^0.8.4",
2931
"request": "^2.81.0",
3032
"sprintf-js": "^1.1.1",
33+
"sqlite3": "^3.1.8",
3134
"xmlbuilder": "^9.0.0"
3235
},
3336
"repository": {

services/log-event.js

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
(function () {
22
"use strict";
33

4-
var moment = require('moment');
4+
var data = require('./data'),
5+
moment = require('moment');
56

6-
function logEvent(data, eventtype, htmltext, startticks, req) {
7+
function logEvent(deprecated, eventtype, htmltext, startticks, req) {
78
var secs, time;
89

910
time = moment();
@@ -13,19 +14,34 @@
1314
req = {headers: false};
1415
}
1516

16-
data.eventlog.unshift({
17-
'eventtype': eventtype,
18-
'htmltext': htmltext,
19-
'secs': secs,
20-
'time': time,
21-
'headers': req.headers
17+
data.getDb(function (err, db) {
18+
if (err) {
19+
console.error(err);
20+
return;
21+
}
22+
23+
db.serialize(function() {
24+
25+
var stmt = db.prepare(`
26+
INSERT INTO log_events (
27+
eventtype,
28+
htmltext,
29+
secs,
30+
time,
31+
headers
32+
) VALUES (
33+
?,
34+
?,
35+
?,
36+
?,
37+
?
38+
)
39+
`);
40+
41+
stmt.run(eventtype, htmltext, secs, time.toISOString(), JSON.stringify(req.headers));
42+
43+
});
2244
});
23-
24-
while (data.prefs.maxEvents < data.eventlog.length) {
25-
data.eventlog.pop();
26-
}
27-
28-
data.dirty = true;
2945
}
3046

3147
module.exports = logEvent;

0 commit comments

Comments
 (0)