npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

raft-logger-redis

v0.2.16

Published

Distributed logging service

Downloads

36

Readme

Welcome to logster! {#welcome}

Logster is a distributed logging system. have you ever wanted to collect logs from multiple sources and view them in one place? Well Logster is the answer.


NOTE:

  • Logster is still in alpha state
  • Logster is not scalable (Will be soon thanks to redis)

Install

To install Logster you can use npm or git clone

NPM

$ sudo npm install -g raft-logger-redis

GIT

$ git clone https://github.com/MangoRaft/Logger.git
$ cd Logger
$ sudo npm install -g

Architecture

Logsters architecture is similar to logplex from heroku. The difference logster uses UDP to receive the messages. There are 4 parts to logster, the Logger, UDP-Server, Web-server and the viewer.

The logger send message over UDP to the UDP-Server. The UDP-server send the log messages to the Web-server. From the Web-server drains can receive logs over HTTP.

Usage

You can use logster through the command line or include it in your program.

In your program

To use logster in your program just require it. Most of the time you will only use the Logger or the Viewer

var logster = require('raft-logger');

Logger

To use the logger you need to create a logger You need to pass in the web and udp port and host

Options

  • web.host Required. Host for the web server.
  • web.port Required. Port for the web server.
  • udp.host Required. Host for the udp server.
  • udp.port Required. Port for the udp server.
var logger = logster.Logger.createLogger({
	web : {
		host : '127.0.0.1',
		port : 5000
	},
	udp : {
		host : '127.0.0.1',
		port : 5000
	}
});

Once you have a logging instance you can create the per process logger.

Options

  • source Used to group logs.
  • channel Used to to identify logs to a specific task.
  • session Optional. Used for a pre-defined log session.
  • bufferSize Optional. Defaults to 100 line. Used to buffer log line before sending in bulk. Set to 0 for real-time logging
  • flushInterval Optional. Defaults to 5000ms. Time intival to send logs in bulk
var workerLog = logger.create({
	source : 'app',
	channel : 'worker.1',
	session : 'my-session-id', //Optional 
	bufferSize : 1, //Optional defaults to 100
	flushInterval : 10000 //Optional defaults to 5000ms
});

To start the flushInterval you must call start()

workerLog.start();

To stop the flushInterval you must call stop()

workerLog.stop();

To log a line just call log()

workerLog.log("my great text I need logged");

Mark a time. Finish timer, record output.

workerLog.time('my-timmer');
setTimeout(function() {
	workerLog.timeEnd('my-timmer');
}, 1000);

Print to stderr Trace :, followed by the formatted message and stack trace to the current position.

workerLog.trace();

Uses util.inspect on obj and prints resulting string to log server. This function bypasses any custom inspect() function on obj.

workerLog.dir(obj);

The logging instance is designed to be used as a stream so you can pipe to it. This is useful for logging stdin, stdout and reading from a file.

fs.createReadStream('./sample_traffic.log').pipe(workerLog);

Pipe the output of a program to the log server.

ps | logster-redis log

View

The viewer is used to retrive logs from the server. Create a view call View.createView({options})

Options

  • host Required. Host of the web server.
  • port Required. Port of the web server.
  • session Optional. Used for a pre-defined log session.
  • backlog Optional. Defaults to false. Used pull all the logs from the server. If false only new logs will be pulled.
var view = logging.View.createView({
	host : 'localhost',
	port : 3000,
	session : 'my-session-id', //Optional 
	backlog : true  //Optional defaults to false
});

Subscribe for the data event

view.on('data', function(data) {
	console.log(data);  
	//{ ts: 1423363927109,
	// channel: 'worker.1',
	// source: 'app',
	// msg: '...' }
});

Start listening for log data.

view.start();

CLI

We have a cli program that can be used to setup and use the logging service

Help

$ logster-redis -h

  Usage: logster-redis [options] [command]


  Commands:

    view [options]       View logs in teal-time.
    log [options]        Send logs to the server.
    register [options]   Register a log session with the server.
    server [options]     Run the log server.

  Options:

    -h, --help     output usage information
    -V, --version  output the version number

Server

Starting the server is the first thing you want to do. The servers are setup to scale. You can run it as a cluster or run each part on different servers.

$ logster-redis server -h

  Usage: server [options]

  run setup commands for all envs

  Options:

    -h, --help                   output usage information
    -a, --addr [HOST]            Bind to HOST address (default: 127.0.0.1)
    -p, --port [PORT]            Use PORT (default: 5000)
    -A, --redis-addr [HOST]      Connect to redis HOST address (default: 127.0.0.1)
    -P, --redis-port [PORT]      Connect to redis PORT (default: 6379)
    -o, --redis-auth [PASSWORD]  Use redis auth
    -w, --web                    Start Web-Server
    -u, --udp                    Start UDP-Server
    -c, --cluster                Start server as cluster

#####Example

$ logster-redis server -w -u -c

View

Using -f to wire the logs to file for persistan storage.

$ logster-redis view -h

  Usage: view [options]

  run setup commands for all envs

  Options:

    -h, --help               output usage information
    -a, --addr [HOST]        Bind to HOST address (default: 127.0.0.1)
    -p, --port [PORT]        Use PORT (default: 5000)
    -S, --source [SOURCE]    Source to use (database)
    -c, --channel [CHANNEL]  Channel to use (redis.1)
    -e, --session [SESSION]  Session to use (default: SESSION)
    -b, --backlog            Retrieve all logs from the server (default: false)
    -f, --file [FILE]        File to write to

#####Example

$ logster-redis view -b -e my-session-token -f /path/to/file.log

Log

$ logster-redis log -h

  Usage: log [options]

  run setup commands for all envs

  Options:

    -h, --help                  output usage information
    -a, --addr [HOST]           Bind to HOST address (default: 127.0.0.1)
    -p, --port [PORT]           Use PORT (default: 5000)
    -S, --source [SOURCE]       Source to use (default: stdin)
    -c, --channel [CHANNEL]     Channel to use (default: process.1)
    -e, --session [SESSION]     session to use (default: SESSION)
    -b, --bufferSize [SIZE]     bufferSize to use (default: 100)
    -f, --flushInterval [SIZE]  Interval to flush the buffer (default: 5000ms)

#####Example

$ ps | logster-redis log -e my-session-token
$ cat /path/to/file.log | logster-redis log -e my-session-token -s my-custom-source -c dev-server.1
$ tail /path/to/file.log | logster-redis log -e my-session-token -s my-custom-source -c dev-server.1

Register

If you want to register a session token but dont want to use it yet.

$ logster-redis register -h

  Usage: register [options]

  run setup commands for all envs

  Options:

    -h, --help               output usage information
    -a, --addr [HOST]        Bind to HOST address (default: 127.0.0.1)
    -p, --port [PORT]        Use PORT (default: 5000)
    -e, --session [SESSION]  session to use (default: SESSION)

#####Example

$ logster-redis register -e my-custom-session