logging.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var cluster = require("cluster");
  2. var config = require("./config");
  3. var exp = {};
  4. // returns all values in the +args+ object separated by " "
  5. function join_args(args) {
  6. var values = [];
  7. for (var i = 0, l = args.length; i < l; i++) {
  8. values.push(args[i]);
  9. }
  10. return values.join(" ");
  11. }
  12. // prints +args+ to +logger+ (defaults to `console.log`)
  13. // the +level+ and a timestamp is prepended to each line of log
  14. // the timestamp can be disabled in the config
  15. function log(level, args, logger) {
  16. logger = logger || console.log;
  17. var time = config.log_time ? new Date().toISOString() + " " : "";
  18. var clid = (cluster.worker && cluster.worker.id || "M");
  19. var lines = join_args(args).split("\n");
  20. for (var i = 0, l = lines.length; i < l; i++) {
  21. logger(time + clid, level + ":", lines[i]);
  22. }
  23. }
  24. exp.log = function() {
  25. log(" INFO", arguments);
  26. };
  27. exp.warn = function() {
  28. log(" WARN", arguments, console.warn);
  29. };
  30. exp.error = function() {
  31. log("ERROR", arguments, console.error);
  32. };
  33. if (config.debug_enabled || process.env.DEBUG === "true") {
  34. exp.debug = function() {
  35. log("DEBUG", arguments);
  36. };
  37. } else {
  38. exp.debug = function() {};
  39. }
  40. module.exports = exp;