dingtalk-robot-transport

0.1.3 • Public • Published

dingtalk-robot-transport

依赖

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

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

可选参数

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

详细说明

  • timestamp(): String

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

  • formatter(info: Object): Object

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

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

示例

  • 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

计划

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

Package Sidebar

Install

npm i dingtalk-robot-transport

Weekly Downloads

1

Version

0.1.3

License

MIT

Unpacked Size

519 kB

Total Files

37

Last publish

Collaborators

  • wuliangwei