lib/logging.js

  1. /**
  2. * @file Handle application logs
  3. * @author Antonio Olmo Titos <a@olmo-titos.info>
  4. * @exports lib/logging
  5. */
  6. // Configuration:
  7. const CONFIG = require('../config');
  8. // External packages:
  9. const WINSTON = require('winston');
  10. // Variables:
  11. var logger;
  12. /**
  13. * Set up logging
  14. */
  15. const setUp = function() {
  16. if (logger)
  17. logger.warn(`“logging.setUp()” called more than once`);
  18. else {
  19. const level = CONFIG.debug ? 'silly' : 'info';
  20. // @TODO: handle issues.
  21. logger = WINSTON.createLogger({
  22. transports: [
  23. new WINSTON.transports.Console({level: level, json: false}),
  24. new WINSTON.transports.File({level: level, json: false, filename: CONFIG.log})
  25. ]
  26. });
  27. logger.info(`logging to file “${CONFIG.log}” with level “${level}”`);
  28. // Export more stuff:
  29. exports.error = logger.error;
  30. exports.warn = logger.warn;
  31. exports.info = logger.info;
  32. exports.debug = logger.debug;
  33. exports.dir = dir;
  34. }
  35. };
  36. /**
  37. * Log the trace of an object
  38. * @param {Object} obj - the object to print
  39. * @param {String} msg - (optional) a message to prefix the trace
  40. */
  41. const dir = function(obj, msg) {
  42. const prefix = msg ? `${msg}: ` : '';
  43. const trace = JSON.stringify(obj);
  44. logger.debug(`${prefix}${trace}`);
  45. };
  46. // Export stuff:
  47. exports.setUp = setUp;