logger.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // https://blog.csdn.net/crazy_jialin/article/details/121673336
  2. // logger.js
  3. const log4js = require('log4js')
  4. var { logger_config } = require('../config/config.js')
  5. var feishu = require('./feishu')
  6. const BASE_PATH = logger_config.BASE_PATH
  7. log4js.configure({
  8. appenders: {
  9. consoleOut: {
  10. type: 'console',
  11. layout: {
  12. type: 'colored',
  13. },
  14. },
  15. default: {
  16. type: 'file',
  17. filename: BASE_PATH + `/denet_node_server_logger`,
  18. pattern: 'yyyy-MM-dd.log',
  19. alwaysIncludePattern: true, // 当为 true 时,log 文件名会包含之前设置的 pattern 信息 (默认为 false,但是强烈建议开启)
  20. },
  21. error: {
  22. type: 'file',
  23. filename: BASE_PATH + `/denet_node_server_logger_error`,
  24. pattern: 'yyyy-MM-dd.log',
  25. alwaysIncludePattern: true,
  26. },
  27. transfer: {
  28. type: 'file',
  29. filename: BASE_PATH + `/denet_node_server_logger_transfer`,
  30. pattern: 'yyyy-MM-dd.log',
  31. alwaysIncludePattern: true,
  32. },
  33. },
  34. categories: {
  35. default: {
  36. appenders: ['consoleOut', 'default'],
  37. level: 'all',
  38. },
  39. error: {
  40. appenders: ['consoleOut', 'error'],
  41. level: 'warn',
  42. },
  43. transfer: {
  44. appenders: ['consoleOut', 'transfer'],
  45. level: 'all',
  46. },
  47. },
  48. })
  49. const defaultLogger = log4js.getLogger('default') // 普通级别的logger,输出到控制台和日期分类的文件
  50. const errorLogger = log4js.getLogger('error') // 错误信息的logger,输出到控制台和error.log中
  51. const transferLogger = log4js.getLogger('transfer') // 转账信息的logger,输出到控制台和error.log中
  52. module.exports = {
  53. // info及以下级别的日志采用default策略,使用call函数改变this指向,否则会导致logger内部this指向报错
  54. trace() {
  55. return defaultLogger.trace.call(defaultLogger, ...arguments)
  56. },
  57. debug() {
  58. return defaultLogger.debug.call(defaultLogger, ...arguments)
  59. },
  60. info() {
  61. return defaultLogger.info.call(defaultLogger, ...arguments)
  62. },
  63. log() {
  64. return defaultLogger.debug.call(defaultLogger, ...arguments)
  65. },
  66. // warn及以上的日志采用error策略
  67. warn() {
  68. errorLogger.warn.call(errorLogger, ...arguments)
  69. },
  70. error() {
  71. errorLogger.error.call(errorLogger, ...arguments)
  72. feishu.sendMessage(...arguments)
  73. },
  74. fatal() {
  75. errorLogger.fatal.call(errorLogger, ...arguments)
  76. },
  77. mark() {
  78. errorLogger.mark.call(errorLogger, ...arguments)
  79. },
  80. //转账log
  81. tlog() {
  82. return transferLogger.debug.call(transferLogger, ...arguments)
  83. }
  84. }
  85. //use
  86. // const logger = require('./logger')
  87. // logger.trace('trace log')
  88. // logger.debug('debug log')
  89. // logger.info('info log')
  90. // logger.warn('warn log')
  91. // logger.error('error log')
  92. // logger.fatal('fatal log')
  93. // logger.mark('mark log')