logger.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. var levels = require('./levels')
  3. , util = require('util')
  4. , events = require('events')
  5. , DEFAULT_CATEGORY = '[default]';
  6. /**
  7. * Models a logging event.
  8. * @constructor
  9. * @param {String} categoryName name of category
  10. * @param {Log4js.Level} level level of message
  11. * @param {Array} data objects to log
  12. * @param {Log4js.Logger} logger the associated logger
  13. * @author Seth Chisamore
  14. */
  15. function LoggingEvent (categoryName, level, data, logger) {
  16. this.startTime = new Date();
  17. this.categoryName = categoryName;
  18. this.data = data;
  19. this.level = level;
  20. this.logger = logger;
  21. }
  22. /**
  23. * Logger to log messages.
  24. * use {@see Log4js#getLogger(String)} to get an instance.
  25. * @constructor
  26. * @param name name of category to log to
  27. * @author Stephan Strittmatter
  28. */
  29. function Logger (name, level) {
  30. this.category = name || DEFAULT_CATEGORY;
  31. if (level) {
  32. this.setLevel(level);
  33. }
  34. }
  35. util.inherits(Logger, events.EventEmitter);
  36. Logger.DEFAULT_CATEGORY = DEFAULT_CATEGORY;
  37. Logger.prototype.level = levels.TRACE;
  38. Logger.prototype.setLevel = function(level) {
  39. this.level = levels.toLevel(level, this.level || levels.TRACE);
  40. };
  41. Logger.prototype.removeLevel = function() {
  42. delete this.level;
  43. };
  44. Logger.prototype.log = function() {
  45. var args = Array.prototype.slice.call(arguments)
  46. , logLevel = args.shift()
  47. , loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
  48. this.emit("log", loggingEvent);
  49. };
  50. Logger.prototype.isLevelEnabled = function(otherLevel) {
  51. return this.level.isLessThanOrEqualTo(otherLevel);
  52. };
  53. ['Trace','Debug','Info','Warn','Error','Fatal'].forEach(
  54. function(levelString) {
  55. var level = levels.toLevel(levelString);
  56. Logger.prototype['is'+levelString+'Enabled'] = function() {
  57. return this.isLevelEnabled(level);
  58. };
  59. Logger.prototype[levelString.toLowerCase()] = function () {
  60. if (this.isLevelEnabled(level)) {
  61. var args = Array.prototype.slice.call(arguments);
  62. args.unshift(level);
  63. Logger.prototype.log.apply(this, args);
  64. }
  65. };
  66. }
  67. );
  68. exports.LoggingEvent = LoggingEvent;
  69. exports.Logger = Logger;