Bunyan is a straightforward logging library
for Node.js applications. Bunyan’s output is line delimited JSON, which makes
it easy to consume with your normal unix command line utilities like grep
and
sed
, and also with its own CLI utility, or with the json cli
utility.
Bunyan also comes with built-in support for DTrace, which allows you to keep
your existing log level for your existing destinations (e.g. INFO
) but enable
at runtime a more verbose level (e.g. TRACE
) and be notified in user space of
those log entries, without them also going to your existing destinations and
potentially filling the disks. DTrace is completely safe to use at runtime, so
if enabling higher levels of logging would result in detrimental effect your
system DTrace will exit before doing your system harm.
That is, you’ve already defined in your configuration the level at which you want your application to log, but your process is currently misbheaving and you’re looking to find out more information without potentially restarting the service or increasing the amount of storage where your logs are stored. With bunyan and DTrace you can enable your process to send to you the log level you’re interested in at runtime.
# bunyan -p *
[2013-09-27T18:16:19.679Z] DEBUG: test/1076 on sharptooth.local: something went wrong
Fast is a lightweight library for efficiently handling JSON messaging across a TCP channel. At its base it was created to enable message-based RPC, where the result for a given command may induce a series of related objects being streamed to the client. Designed with observability in mind, fast also comes with DTrace support, allowing you to quickly identify the performance characteristics of your server and clients.
kang is a debugger for distributed systems: it fetches, aggregates, and presents program state for consumption by both humans and automated tools. The goal is to allow each component of the distributed system to describe the objects it knows about (and potentially a small amount of metadata suggesting what to do with this information) so that the kang system can fetch, aggregate, and present this information usefully.
Restify is a module for creating and consuming REST endpoints. Designed specifically to increase the observability and debugability of your application, Restify comes with first class Bunyan support as well support for DTrace. With Bunyan and DTrace support, you’re gaining the ability to see via the logs or at runtime routes and their latencies over requests.
vasync is a control flow library, inspired
by the patterns found in the async module.
However vasync
is designed specifically to enable a consumer to have
visibility and observability into their progress for a given task. Such
information is crucial when trying to determine how far along a task was before
an error occurred.
verror extends the base Error
class, and
allows you to define your messages using printf
string formatting. The logic
for your application is often a composition of asynchronous methods, and when
adding error handling you may want to bubble that information up through your
system. verror
has VError
and WError
which allow you to accumulate
multiple levels of errors through a chain, and either see the combination of
errors in the message (as in VError
) or have a final message in WError
but
programmatically be able to access the previous errors in the chain.