Skip to content

A Winston transport hook to send logs over to a Office 365 Connector.

License

Notifications You must be signed in to change notification settings

SukantGujar/winston-office365-connector-hook

Repository files navigation

winston-office365-connector-hook Build Status npm version npm npm

A Winston transport hook to send logs over to a Office 365 Connector, e.g. Microsoft Teams channel.

Inspired by winston-slack-hook by fahad19.

Uses queue implementation by jessetane for processing transport tasks.

banner

Install

$ npm install --save winston winston-office365-connector-hook

Requirements

Note that Office 365 Connector Webhook URL is tied to a given channel, so you don't need to specify a channel name separately.

Usage

Basic

var winston = require('winston');
var Office365ConnectorHook = require('winston-office365-connector-hook');

var Logger = winston.Logger;
var Console = winston.transports.Console;

var logger = new Logger({
  transports: [
    new Console({}),
    new Office365ConnectorHook({
      hookUrl: 'https://outlook.office.com/webhook/XXXXXXXXXXXXX' // No need for a channel name
    })
  ]
});

logger.info('I am being logged here'); // will be sent to both console and Teams channel

Options

Require:

  • hookUrl: Connector Webhook URL to post to

Optional:

  • prependLevel: set to true by default, sets [level] at the beginning of the message
  • appendMeta: set to true by default, sets stringified meta at the end of the message
  • formatter(options): function for transforming the message before posting to Slack
  • colors: use this to set custom colors to log levels. Note that you MUST use hex format, not names. e.g.
  "colors": {
     "debug": "4256f4",
     "error": "f00"
   }

Behind the scenes, the level color is sent as the themeColor property of the card.

generic log error example

Markdown support in messages

Channel messages support Markdown syntax. Any formatting is sent as-is to the Channel.

logger.info('# Seriously!?\n > This is cool!', { title: 'You can use Markdown in messages.' });

markdown example

Setting card title

You can set a title for the card by sending it as a part of the meta hash:

logger.info('This text appears in card body.', { title: 'My puny title' });

title example

Formatter

Messages can be formatted further before posting to the channel:

var logger = new Logger({
  transports: [
    new Office365ConnectorHook({
      hookUrl: 'https://outlook.office.com/webhook/XXXXXXXXXXXXX'

      formatter: function (options) {
        var message = options.message; // original message

        // var level = options.level;
        // var meta = options.meta;

        // do something with the message

        return message;
      }
    })
  ]
});

Changelog

  • 0.1.7 Implemented queue based processing of log requests to ensure messages are not dropped during heavy traffic.
  • 0.1.6 Fixed error object serialization.
  • 0.1.5 Initial release.

Roadmap

See here

About

A Winston transport hook to send logs over to a Office 365 Connector.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published