Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fluent-logger

Package Overview
Dependencies
Maintainers
4
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fluent-logger

fluent-logger implementation for Node.js inspired by [fluent-logger-python].

  • 2.5.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
35K
decreased by-2.06%
Maintainers
4
Weekly downloads
 
Created
Source

fluent-logger for Node.js

fluent-logger implementation for Node.js inspired by fluent-logger-python.

NPM

Build Status

Install

$ npm install fluent-logger

Prerequistes

Fluent daemon should listen on TCP port.

Simple configuration is following:

<source>
  @type forward
  port 24224
</source>

<match **.*>
  @type stdout
</match>

Usage

Send an event record to Fluentd

Singleton style

var logger = require('fluent-logger')
// The 2nd argument can be omitted. Here is a default value for options.
logger.configure('tag_prefix', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   reconnectInterval: 600000 // 10 minutes
});

// send an event record with 'tag.label'
logger.emit('label', {record: 'this is a log'});

Instance style

var logger = require('fluent-logger').createFluentSender('tag_prefix', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   reconnectInterval: 600000 // 10 minutes
});

The emit method has following signature

.emit([label string], <record object>, [timestamp number/date], [callback function])

Where only the record argument is required. If the label is set it will be appended to the configured tag.

Shared key authentication

Logger configuration:

var logger = require('fluent-logger').createFluentSender('tag_prefix', {
  host: 'localhost',
  port: 24224,
  timeout: 3.0,
  reconnectInterval: 600000, // 10 minutes
  security: {
    clientHostname: "client.localdomain",
    sharedKey: "secure_communication_is_awesome"
  }
});
logger.emit('debug', { message: 'This is a message' });

Server configuration:

<source>
  @type forward
  port 24224
  <security>
    self_hostname input.testing.local
    shared_key secure_communication_is_awesome
  </security>
</source>

<match dummy.*>
  @type stdout
</match>

See also Fluentd examples.

EventTime support

We can also specify EventTime as timestamp.

var FluentLogger = require('fluent-logger');
var EventTime = FluentLogger.EventTime;
var logger = FluentLogger.createFluentSender('tag_prefix', {
var eventTime = new EventTime(1489547207, 745003500); // 2017-03-15 12:06:47 +0900
logger.emit('tag', { message: 'This is a message' }, eventTime);

Events

var logger = require('fluent-logger').createFluentSender('tag_prefix', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   reconnectInterval: 600000 // 10 minutes
});
logger.on('error', function(error) {
  console.log(error);
});
logger.on('connect', function() {
  console.log('connected!');
});

Logging Library Support

log4js

Before using [log4js] support, you should install it IN YOUR APPLICATION.

var log4js = require('log4js');
log4js.addAppender(require('fluent-logger').support.log4jsAppender('mytag', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0
}));

var logger = log4js.getLogger('foo');
logger.info('this log record is sent to fluent daemon');

You can add log level after tag automatically.

var log4js = require('log4js');
log4js.addAppender(require('fluent-logger').support.log4jsAppender('mytag', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   levelTag: true
}));

var logger = log4js.getLogger('foo');
logger.info('this log record is sent to fluent daemon');

If levelTag is true, tag is "mytag.INFO". If levelTag is false, tag is "mytag".

You can handle inner events such as 'error' it is raised when fluentd is down.

var log4js = require('log4js');
var appender = require('fluent-logger').support.log4jsAppender('mytag', {
  host: 'localhost',
  port: 24224,
  timeout: 3.0
});
appender.on('error', function(err) {
  // Handle err object
  console.log(err);
});
log4js.addAppender(appender);

winston

Before using winston support, you should install it IN YOUR APPLICATION.

var winston = require('winston');
var config = {
  host: 'localhost',
  port: 24224,
  timeout: 3.0
};
var fluentTransport = require('fluent-logger').support.winstonTransport();
var logger = new (winston.Logger)({
    transports: [new fluentTransport('mytag', config), new (winston.transports.Console)()]
});

logger.log('info', 'this log record is sent to fluent daemon');
logger.info('this log record is sent to fluent daemon');

stream

Several libraries use stream as output.

var sender = require('fluent-logger').createFluentSender('tag_prefix', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   reconnectInterval: 600000 // 10 minutes
});
var logger = new Console(sender.toStream('stdout'), sender.toStream('stderr'));
logger.log('this log record is sent to fluent daemon');

Options

tag_prefix

The tag prefix string. You can specify null when you use FluentSender directly. In this case, you must specify label when you call emit.

host

The hostname. Default value = 'localhost'.

See socket.connect

port

The port to listen to. Default value = 24224.

See socket.connect

path

The path to your Unix Domain Socket. If you set path then fluent-logger ignores host and port.

See socket.connect

timeout

Set the socket to timetout after timeout milliseconds of inactivity on the socket.

See socket.setTimeout

reconnectInterval

Set the reconnect interval in milliseconds. If error occurs then reconnect after this interval.

requireAckResponse

Change the protocol to at-least-once. The logger waits the ack from destination.

ackResponseTimeout

This option is used when requireAckResponse is true. The default is 190. This default value is based on popular tcp_syn_retries.

eventMode

Set Event Modes. This logger supports Message, PackedForward and CompressedPackedForward. Default is Message.

NOTE: We will change default to PackedForward and drop Message in next major release.

flushInterval

Set flush interval in milliseconds. This option has no effect in Message mode. The logger stores emitted events in buffer and flush events for each interval. Default 100.

security.clientHostname

Set hostname of this logger. Use this value for hostname based authentication.

security.sharedKey

Shared key between client and server.

security.username

Set username for user based authentication. Default values is empty string.

security.password

Set password for user based authentication. Default values is empty string.

internalLogger

Set internal logger object for FluentLogger. Use console by default. This logger requires info and error method.

License

Apache License, Version 2.0.

About NodeJS versions

This package is compatible with NodeJS versions > 4.

Keywords

FAQs

Package last updated on 11 Oct 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc