序列化日志记录,不读取cls挂钩的上下文

时间:2018-06-24 12:15:02

标签: node.js express sequelize.js

我已经启用了日志记录模式,并使用在winston之上构建的自定义日志记录接口进行日志记录。 在每个记录的消息中,我附加一个唯一的请求UUID(每个请求唯一),并使用cls-hooked使它可用于所有模块。

但是,使用sequelize记录查询时,由于某种原因,它无法引用我创建并用于存储引用的命名空间。

令人惊讶的是这里的随机性。有时我收到请求ID,有时却没有。

new Sequelize(config.orm.mysql.dbConnection, {
  logging: constants.ENABLE_SQL_CONSOLE_LOGGING ? (msg, time) => {
    logger.info('db-logs', msg + ', Elapsed time: ' + time + ' ms')
  } : false,
  pool: {
    max: constants.POOL_MAX_SIZE,
    min: constants.POOL_MIN_SIZE,
    acquire: constants.POOL_ACQUIRE_TIME,
    idle: constants.POOL_IDLE_TIME
  },
})

登录界面

try {
    let formattedMessage = context + ' || [' + level.toUpperCase() + '] || ' + moment()
      .format('YYYY-MM-DD HH:mm:ss') + ' || PID: ' + process.pid + ' || ' + message + ' '

    let namespace = getNamespace(constants.APP_NAME)
    let refId
    if (namespace !== undefined) {
      refId = namespace.get(constants.REF_ID)
    }formattedMessage = (refId ? refId : '') + ' || ' + formattedMessage

在这里,formattedMessage变量不包含refId。

这里有任何解决方法吗?

0 个答案:

没有答案