diff --git a/lib/loggly/client.js b/lib/loggly/client.js index df3a527..6cb99c1 100644 --- a/lib/loggly/client.js +++ b/lib/loggly/client.js @@ -28,14 +28,20 @@ function stringify(msg) { // // function to truncate message over 1 MB // -function truncateLargeMessage(message) { +function truncateLargeMessage(message) { var maximumBytesAllowedToLoggly = EVENT_SIZE; - var bytesLengthOfLogMessage = Buffer.byteLength(message); + var bytesLengthOfLogMessage = Buffer.byteLength(message); + var isMessageTruncated = false; if(bytesLengthOfLogMessage > maximumBytesAllowedToLoggly) { message = message.slice(0, maximumBytesAllowedToLoggly); + isMessageTruncated = true; } - return message; + return { + message: message, + isMessageTruncated: isMessageTruncated + }; } + // // function createClient (options) // Creates a new instance of a Loggly client. @@ -105,7 +111,18 @@ util.inherits(Loggly, events.EventEmitter); // - http://www.loggly.com/docs/api-sending-data/ // Loggly.prototype.log = function (msg, tags, callback) { - msg.message = truncateLargeMessage(msg.message) + // typeof msg is string when we are using node-loggly-bulk to send logs. + // If we are sending logs using winston-loggly-bulk, msg is object. + // Check if 'msg' is an object, if yes then stringify it to truncate it over 1MB. + var truncatedMessageObject = null; + if(typeof(msg) === 'object'){ + var stringifiedMessage = JSON.stringify(msg) + truncatedMessageObject = truncateLargeMessage(stringifiedMessage); + msg = truncatedMessageObject.isMessageTruncated ? truncatedMessageObject.message : msg; + }else if (typeof(msg) === 'string') { + truncatedMessageObject = truncateLargeMessage(msg); + msg = truncatedMessageObject.isMessageTruncated ? truncatedMessageObject.message : msg; + } if (!callback && typeof tags === 'function') { callback = tags; tags = null;