0.1.3 • Published 4 years ago

dingtalk-robot-transport v0.1.3

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

dingtalk-robot-transport

依赖

winston 2.x(目前不支持3.x版本)

钉钉机器人的token,如何生成钉钉机器人可以参考钉钉自定义机器人文档

可选参数

参数类型用途默认值必须备注
levelString指定日志输出级别-
tokenString 或String[]指定日志推送的目标机器人npm.io-当token是个列表时并不是批量发送给每个token,而是用于拓展
titleStringnpm.io日志通知
appNameString应用的名称读取项目根目录package.json,获取name属性,如果没有获取到会是unknown
hostnameString产生日志的服务器名默认通过require('os').hostname()获取
robotHookHostString钉钉机器人推送的hosthttps://oapi.dingtalk.com
timestampFunction格式化日志产生的时间戳moment的YYYY-MM-DD HH:mm:ss,SSS
formatterFunction自定义钉钉推送的消息格式format.simple
retriesNumber钉钉消息推送失败之后重试次数,用户可以通过设置0来关闭重试功能3每次重试时,都会保证和上一次使用不同的token

详细说明

  • timestamp(): String

    内置的timestamp是不接受任何参数的

  • formatter(info: Object): Object

函数参数是一个对象,有以下属性

参数类型备注
msgString日志的消息部分
metaObject日志的meta部分
levelString日志的级别(过滤后的,例如:实例化的时候定义了level:info,这里的level只可能是info及其以上)
titleString钉钉消息推送时的title
appNameString应用的名称
hostnameString产生日志的服务器名
stimestampFunction获取格式化后时间的函数

示例

  • timestamp
const moment = require('moment');

function timestamp() {
    return new moment(new Date()).format('YYYY-MM-DD HH:mm:ss,SSS');
};
  • formatter

    此函数的返回值会直接用于发送钉钉消息推送,所以用户可以在这里自定义任何钉钉支持的消息格式

    • simple
    import { transport as DingTalkRobotTransport, format  } from 'dingtalk-robot-transport'
    
    const logger = new winston.Logger({
      transports: [
        new DingTalkRobotTransport({
          name: 'dingTalk',
          hostname: 'dingTalk-robot',
          level: 'info',
          token: 'token',
          formatter: format.simple,
          maxLine: 2
        })
      ]
    });
    
    logger.info('riderId[1] traceId[1a9b7b50-dc03-11e8-bebd-8d484495fcd0]', '查询某某接口失败: ', new Error('just an error.'))

    simple

    • 未来会支持更多的格式

使用

yarn add dingtalk-robot-transport

import { transport as DingTalkRobotTransport, format } from 'winston'

const logger = new winston.Logger({
  transports: [
    new DingTalkRobotTransport({
      name: 'dingTalk', // winston 本身的限制,这个是必须的
      hostname: 'dingTalk-robot', // 可选参数
      level: 'error',
			token: 'your robot token', // ['token1', 'token2'],启用多个token,降低频率(20条/分钟)限制的影响
      retries: 0, // 默认: 3,失败(包括频率限制导致的失败)会重试 3 次 ,多个 token 时每次重试会使用和上一次不同的token
      maxLine: 2
    })
  ]
});

logger.info('robot token')

ChangeLog

  • v1.0.0

计划

  • 添加频率控制功能。超过指定频率的错误在一段时间内不再推送