Simple logging library for node.js.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. var colors = require("colors");
  2. var theme = {
  3. timestamp: "blue",
  4. level_0: "grey",
  5. level_1: "yellow",
  6. level_2: "red",
  7. level_3: ["bold", "red"]
  8. }
  9. colors.setTheme(theme);
  10. var strs = [
  11. "INFO:",
  12. "NOTICE:",
  13. "WARNING:",
  14. "ERROR:"
  15. ]
  16. function pad(str, length, padChar) {
  17. if (typeof str === "number")
  18. str = str.toString();
  19. var missing = (length - str.length) + 1;
  20. if (missing <= 0)
  21. return str;
  22. return new Array(missing).join(padChar) + str;
  23. }
  24. function prefix(level) {
  25. var date = new Date();
  26. var yyyy = pad(date.getFullYear(), 4, "0");
  27. var mm = pad(date.getMonth() + 1, 2, "0");
  28. var dd = pad(date.getDate(), 2, "0");
  29. var HH = pad(date.getHours(), 2, "0");
  30. var MM = pad(date.getMinutes(), 2, "0");
  31. var SS = pad(date.getSeconds(), 2, "0");
  32. var dateStr = (yyyy+"/"+mm+"/"+dd+" "+HH+":"+MM+":"+SS).timestamp;
  33. var levelStr = strs[level]["level_"+level];
  34. return dateStr+" "+levelStr+" ";
  35. }
  36. function log(level, msg) {
  37. if (typeof msg === "string") {
  38. console.log(
  39. prefix(level)+
  40. msg["level_"+level]
  41. );
  42. } else {
  43. console.log(
  44. prefix(level)+
  45. (msg.toString()+" - stack trace:")["level_"+level]
  46. );
  47. console.trace(msg);
  48. }
  49. }
  50. exports.info = function(msg) { log(0, msg) };
  51. exports.notice = function(msg) { log(1, msg) };
  52. exports.warn = function(msg) { log(2, msg) };
  53. exports.error = function(msg) { log(3, msg) };
  54. exports.die = function(err, exitCode) {
  55. log(3, err);
  56. process.exit(exitCode || 1);
  57. }
  58. exports.setTheme = function(obj) {
  59. for (var i in obj) {
  60. theme[i] = obj[i];
  61. }
  62. colors.setTheme(theme);
  63. }