diff options
author | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-05-15 00:57:07 +1200 |
---|---|---|
committer | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-05-15 00:57:07 +1200 |
commit | a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3 (patch) | |
tree | 7e6089f73d73232fa9f113198673524744e711fe | |
parent | 0d9c66a773813fb4ba523324a3699b8be9e6625d (diff) | |
download | manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.gz manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.bz2 manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.xz manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.zip |
Log proxied IPs, make log format JSON
Easier to make things easily parseable now than have to deal with logs later.
-rw-r--r-- | index.js | 28 | ||||
m--------- | public/js/dc | 0 |
2 files changed, 20 insertions, 8 deletions
@@ -28,7 +28,10 @@ var server = http.createServer(app) /* Only one level is logged, and numerical timestamps are easier to compare. */ logger.format = function(level, date, message) { - return (+date) + ":" + message; + return JSON.stringify({ + date: +date, + data: JSON.parse(message) /* TODO: Get rid of encoding/decoding hack (write own logger?) */ + }); } /* Number of sessions we've seen. */ @@ -44,6 +47,8 @@ var channelCount = 0; /* Channel ID -> { usernum, filters } */ var channels = {}; +var logServerAction = entityLogger(0); + sessionSockets.on('connection', function (err, socket, session) { /* * Don't do anything until they send a login message. @@ -51,6 +56,7 @@ sessionSockets.on('connection', function (err, socket, session) { */ socket.on('login', function() { /* Someone new connected. Restore or initialise their session data. */ + var logAction = entityLogger(session.nid); session.nid = session.nid || (++count); session.nick = session.nick || null; session.save(); @@ -62,7 +68,7 @@ sessionSockets.on('connection', function (err, socket, session) { } sockets[session.nid] = socket; /* New user! */ - logAction("CONNECT", socket.handshake.address.address); + logAction("CONNECT", { "ip": socket.handshake.address.address, "proxied-ip": socket.handshake.headers['x-forwarded-for'] }); users[session.nid] = { nick: session.nick, filters: {} }; /* Let them know of their data. */ socket.emit('selflogin', { @@ -174,14 +180,20 @@ sessionSockets.on('connection', function (err, socket, session) { }); }); }); - function logAction(action, content) { +}); + +function entityLogger(id) { + return function(action, content) { + var message = { + user:id, + action:action + }; if (arguments.length > 1) { - logger.info(session.nid, action, content); - } else { - logger.info(session.nid, action); + message.content = content; } + logger.info(JSON.stringify(message)); } -}); +} -logger.info(0, "STARTUP"); +logServerAction(0, "STARTUP"); server.listen(3000); diff --git a/public/js/dc b/public/js/dc -Subproject eae4725f5d2fbd2445f5b51f5f5af319d56fda5 +Subproject 649860c7f007ae41a89e1d6236748ba36292288 |