On Wed, Jul 11, 2012 at 5:25 PM, Matt <[email protected]> wrote: > On Tue, Jul 10, 2012 at 6:17 PM, Elad Ben-Israel <[email protected] > > wrote: > >> Not sure exactly what use case Gaurav is interested in, but I was >> interested in this thread because I think there is an unmet need around >> logging which domain-attached context could help solve (even a single >> pointer to a global instance). Logs are emitted everywhere across >> application (and library) stack and in node, mostly via `console.xxx`. One >> useful feature would be to allow, for example, correlating all console logs >> emitted during the processing of an incoming request. A few logging >> libraries do allow pushing context but they all require passing along some >> state throughout the async hoops, which means modifying the way logging is >> done throughout the entire stack. >> > > Well yes, you can't use console.log(), but "Don't Do That" anyway, it's > bad practice. Look at how Haraka does logging - every log line gets a UUID > associated with the current connection/transaction. It has made tracing > issues with mail at Craigslist an absolute dream. > > Haraka is awesome but it has the privilege of being a 'mini ecosystem' where plugins must adhere to the Haraka environment (in which case, use the Haraka `this.logxxx()` functions which emit the request UUID by extracting them from the current context in `this`).
Now say you would want to create a Hakara plugin that used a library like socket.io for example (just an example) which emits it's own logs - now what do you do? You will need to pass the Haraka `this` pointer all the way to every log callsite in the socket.io codebase. Not very practical. > Matt. > -- Elad.
