log.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var util = require('util')
  2. , log
  3. , _logger
  4. , _levels
  5. , _serialize
  6. , _output;
  7. _levels = {
  8. 'debug': 'log'
  9. , 'log' : 'log'
  10. , 'info': 'info'
  11. , 'notice': 'info'
  12. , 'warning': 'warn'
  13. , 'warn': 'warn'
  14. , 'error': 'error'
  15. , 'critical': 'error'
  16. , 'alert': 'error'
  17. , 'emergency': 'error'
  18. };
  19. _serialize = function (obj) {
  20. var out;
  21. if (typeof obj == 'string') {
  22. out = obj;
  23. }
  24. else {
  25. out = util.inspect(obj);
  26. }
  27. return out;
  28. };
  29. _output = function (obj, level) {
  30. var out = _serialize(obj);
  31. if (_logger) {
  32. _logger[level](out);
  33. }
  34. else {
  35. console[_levels[level]](out);
  36. }
  37. };
  38. log = function (obj) {
  39. _output(obj, 'info');
  40. };
  41. log.registerLogger = function (logger) {
  42. // Malkovitch, Malkovitch
  43. if (logger === log) {
  44. return;
  45. }
  46. _logger = logger;
  47. };
  48. (function () {
  49. var level;
  50. for (var p in _levels) {
  51. (function (p) {
  52. level = _levels[p];
  53. log[p] = function (obj) {
  54. _output(obj, p);
  55. };
  56. })(p);
  57. }
  58. // Also handle 'access', not an actual level
  59. log.access = log.info;
  60. })();
  61. module.exports = log;