1.0.14 • Published 1 year ago

@firstfleet/ffsyslog v1.0.14

Weekly downloads
1
License
MIT
Repository
-
Last release
1 year ago

winston-syslog

A Syslog transport for winston. This is a fork of winston-syslog. Have added colors for different log levels and better message formatting for use with papertrail. Feel free to to use this and clean it up if you want.

const winston = require('winston');
require('@firstfleet/ffsyslog').Syslog;

This logger accepts the same options as winston-syslog

const transport = new winston.transports.Syslog(options);

winston.add(transport) || winston.createLogger({transports[transport]})

Magic sauce the formats and colors message. Uses ansi-colors npm package.

        let output;
        if (info.stack) {
            //sender, method, message, severity, isOperational
            output = info.stack.split("\n")
            if (info.sender) {
                output.unshift(`sender: ${info.sender}`)
            }
            if (info.method) {
                output.unshift(`method: ${info.method}`)
            }
            if (info.severity) {
                output.unshift(`severity: ${info.severity}`)
            }
            if (info.isOperational) {
                output.unshift(`isOperational: ${info.isOperational}`)
            }
            if (info.message) {
                output.unshift(`Error: ${info.message}`)
            }
        } else {
            output = info.message.split("\\n");
            if (output.length === 1) {
                try {
                    //is a json object
                    output = output[0].split(",");
                }
                catch (e) {
                    console.log(e)
                }

            }
        }
        
          output.forEach((item, index) => {
                            let colorItem;
        
                            if (info.level === 'info') {
                                colorItem = c.cyan(`<<<${info.level}>>>     ${item}`)
                            } else if (info.level === 'error') {
                                colorItem = c.red(`<<<error>>>     ${item}`)
                            } else if (info.level === 'warn') {
                                colorItem = c.yellow(`<<<${info.level}>>>   ${item}`)
                            } else {
                                colorItem = `<<<${info.level}>>>   ${item}`
                            }
                            let message = this.producer.produce({
                                severity: level,
                                host: this.localhost,
                                date: new Date(),
                                message: colorItem
                            })
                            const buffer = new Buffer(message);
        
                            if (this.protocolType === 'udp') {
                                this.inFlight++;
                                this.socket.send(buffer, 0, buffer.length, this.port, this.host, onError);
                            } else if (this.protocol === 'unix') {
                                this.inFlight++;
                                this.socket.send(buffer, 0, buffer.length, this.path, onError);
                            } else if (this.congested) {
                                this.queue.push(syslogMsg);
                            } else {
                                this.socket.once('congestion', onCongestion);
                                this.inFlight++;
                                this.socket.send(buffer, (e) => {
                                    this.socket.removeListener('congestion', onCongestion);
                                    onError(e);
                                });
                            }
                        })
1.0.14

1 year ago

1.0.13

2 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago