In my Node.js applications, I often find it helpful to have an application log so that should something go wrong in production, I can have more information than I get from a crash stack trace to track down problems.To facilitate this, I use a global instance of Winston which is set up as one of the first things in my code:var winston = require('winston');global.applog = new (winston.Logger)({  transports: [    new (winston.transports.Console)({      timestamp: true,      level: 'debug'    })  ]});I then call applog.debug(), applog.info(), applog.warn(), and applog.error() as appropriate throughout my code.  Even if I am in a class included from the main application, I will often send debug messages.For my purposes, this works great.  I get the information I need to keep things running smoothly, and handle unexpected behaviors.  However:This reduces the reuse of any lib code as it cannot stand on its own without having a reference to applog.It doesn't feel like a best practice to have global references used inside modular object-oriented code.I don't think I would ever use a log utility that didn't have the standard methods (debug, info, warn, error), but if I did switch away from Winston it's possible that all my code would need to be updated.Is there a more appropriate pattern I should be following for logging?
General application log
javascript;node.js;logging