Unify logging

This commit is contained in:
James Allen 2014-11-17 12:46:27 +00:00
parent 7b275e9e0e
commit 8bc6d0e291

View file

@ -38,6 +38,7 @@ module.exports = WebsocketController =
client.set("login_count", user?.loginCount) client.set("login_count", user?.loginCount)
callback null, project, privilegeLevel, WebsocketController.PROTOCOL_VERSION callback null, project, privilegeLevel, WebsocketController.PROTOCOL_VERSION
logger.log {user_id, project_id, client_id: client.id}, "user joined project"
# No need to block for setting the user as connected in the cursor tracking # No need to block for setting the user as connected in the cursor tracking
ConnectedUsersManager.updateUserPosition project_id, client.id, user, null, () -> ConnectedUsersManager.updateUserPosition project_id, client.id, user, null, () ->
@ -72,13 +73,12 @@ module.exports = WebsocketController =
joinDoc: (client, doc_id, fromVersion = -1, callback = (error, doclines, version, ops) ->) -> joinDoc: (client, doc_id, fromVersion = -1, callback = (error, doclines, version, ops) ->) ->
Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) -> Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) ->
return callback(error) if error?
return callback(new Error("no project_id found on client")) if !project_id?
logger.log {user_id, project_id, doc_id, fromVersion, client_id: client.id}, "client joining doc" logger.log {user_id, project_id, doc_id, fromVersion, client_id: client.id}, "client joining doc"
AuthorizationManager.assertClientCanViewProject client, (error) -> AuthorizationManager.assertClientCanViewProject client, (error) ->
return callback(error) if error?
client.get "project_id", (error, project_id) ->
return callback(error) if error? return callback(error) if error?
return callback(new Error("no project_id found on client")) if !project_id?
DocumentUpdaterManager.getDocument project_id, doc_id, fromVersion, (error, lines, version, ops) -> DocumentUpdaterManager.getDocument project_id, doc_id, fromVersion, (error, lines, version, ops) ->
return callback(error) if error? return callback(error) if error?
# Encode any binary bits of data so it can go via WebSockets # Encode any binary bits of data so it can go via WebSockets
@ -93,6 +93,7 @@ module.exports = WebsocketController =
escapedLines.push line escapedLines.push line
client.join(doc_id) client.join(doc_id)
callback null, escapedLines, version, ops callback null, escapedLines, version, ops
logger.log {user_id, project_id, doc_id, fromVersion, client_id: client.id}, "client joined doc"
leaveDoc: (client, doc_id, callback = (error) ->) -> leaveDoc: (client, doc_id, callback = (error) ->) ->
Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) -> Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) ->
@ -128,29 +129,31 @@ module.exports = WebsocketController =
getConnectedUsers: (client, callback = (error, users) ->) -> getConnectedUsers: (client, callback = (error, users) ->) ->
Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) -> Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) ->
logger.log {user_id, project_id, client_id: client.id}, "getting connected users"
AuthorizationManager.assertClientCanViewProject client, (error) ->
return callback(error) if error? return callback(error) if error?
client.get "project_id", (error, project_id) -> return callback(new Error("no project_id found on client")) if !project_id?
logger.log {user_id, project_id, client_id: client.id}, "getting connected users"
AuthorizationManager.assertClientCanViewProject client, (error) ->
return callback(error) if error? return callback(error) if error?
return callback(new Error("no project_id found on client")) if !project_id?
ConnectedUsersManager.getConnectedUsers project_id, (error, users) -> ConnectedUsersManager.getConnectedUsers project_id, (error, users) ->
return callback(error) if error? return callback(error) if error?
callback null, users callback null, users
logger.log {user_id, project_id, client_id: client.id}, "got connected users"
applyOtUpdate: (client, doc_id, update, callback = (error) ->) -> applyOtUpdate: (client, doc_id, update, callback = (error) ->) ->
AuthorizationManager.assertClientCanEditProject client, (error) -> Utils.getClientAttributes client, ["user_id", "project_id"], (error, {user_id, project_id}) ->
if error? return callback(error) if error?
logger.error {err: error, doc_id, client_id: client.id, version: update.v}, "client is not authorized to make update" return callback(new Error("no project_id found on client")) if !project_id?
setTimeout () -> # Omit this logging for now since it's likely too noisey
# Disconnect, but give the client the chance to receive the error #logger.log {user_id, project_id, doc_id, client_id: client.id, update: update}, "applying update"
client.disconnect() AuthorizationManager.assertClientCanEditProject client, (error) ->
, 100 if error?
return callback(error) logger.error {err: error, doc_id, client_id: client.id, version: update.v}, "client is not authorized to make update"
setTimeout () ->
Utils.getClientAttributes client, ["user_id", "project_id"], (error, {user_id, project_id}) -> # Disconnect, but give the client the chance to receive the error
return callback(error) if error? client.disconnect()
, 100
return callback(error)
update.meta ||= {} update.meta ||= {}
update.meta.source = client.id update.meta.source = client.id
update.meta.user_id = user_id update.meta.user_id = user_id
@ -165,3 +168,4 @@ module.exports = WebsocketController =
logger.error {err: error, project_id, doc_id, client_id: client.id, version: update.v}, "document was not available for update" logger.error {err: error, project_id, doc_id, client_id: client.id, version: update.v}, "document was not available for update"
client.disconnect() client.disconnect()
callback(error) callback(error)
#logger.log {user_id, project_id, doc_id, client_id: client.id}, "applied update"