logger.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const log4js = require('log4js')
  2. const {format} = require('date-fns');
  3. const {zonedTimeToUtc, utcToZonedTime} = require('date-fns-tz');
  4. const EASTERN_EIGHT_ZONE = 'Asia/Shanghai';
  5. log4js.addLayout('customLayout', (config) => {
  6. return (logEvent) => {
  7. // 转换为东八区时间
  8. const zonedDate = utcToZonedTime(logEvent.startTime, EASTERN_EIGHT_ZONE);
  9. // 格式化时间
  10. const formattedDate = format(zonedDate, 'yyyy-MM-dd HH:mm:ss.SSS', { timeZone: EASTERN_EIGHT_ZONE });
  11. return `${formattedDate} ${logEvent.level} [${logEvent.categoryName}] ${logEvent.data}`;
  12. };
  13. });
  14. // 配置 log4js
  15. log4js.configure({
  16. //输出格式
  17. appenders: {
  18. nodeFile: {
  19. type: 'dateFile',
  20. filename: 'logs/node/application.log', // 指定日志文件的路径和基本名称
  21. pattern: '.yyyy-MM-dd', // 文件名后缀的日期格式
  22. compress: true, // 当日志文件滚动时,压缩(归档)旧文件
  23. numBackups: 30, // 保留30个备份文件
  24. keepFileExt: true, // 保持文件扩展名
  25. layout: {
  26. // type: 'pattern',
  27. type: 'customLayout',
  28. pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`,
  29. }
  30. },
  31. console: {
  32. type: 'console',
  33. layout: {
  34. // type: 'pattern',
  35. type: 'customLayout',
  36. pattern: `%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %c - %m`,
  37. }
  38. }
  39. },
  40. //TRACE>DEBUG>INFO >WARN>ERROR>FATAL\
  41. //default 代表默认的日志对象 : log4js.getLogger();
  42. //日志对象
  43. categories: {
  44. //控制台输出对象
  45. default: {
  46. appenders: ['console', 'nodeFile'],
  47. level: 'TRACE'
  48. },
  49. // //文件输出对象
  50. // infoFile: {
  51. // appenders: ['fileAppender'],
  52. // level: 'DEBUG'
  53. // }
  54. }
  55. });
  56. // 获取默认logger(控制台)
  57. const logger = log4js.getLogger();
  58. // 获取记录info级别日志到文件的logger
  59. // const fileLogger = log4js.getLogger('infoFile');
  60. module.exports = {logger};