binder-project/binder-logging

Name: binder-logging

Owner: Binder

Description: Consistent logging functions for all Node-based Binder modules

Created: 2016-01-11 01:18:50.0

Updated: 2016-01-15 23:51:31.0

Pushed: 2017-08-18 01:59:06.0

Homepage: null

Size: 20

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

:dash: :dash: The Binder Project is moving to a new repo. :dash: :dash:

:books: Same functionality. Better performance for you. :books:

Over the past few months, we've been improving Binder's architecture and infrastructure. We're retiring this repo as it will no longer be actively developed. Future development will occur under the JupyterHub organization.

Thanks for updating your bookmarked links.

:dash: :dash: The Binder Project is moving to a new repo. :dash: :dash:

binder-logging

Consistent logging reader/writer functions for all Node-based Binder modules

Takes a configuration file (the default version in conf/example.main) that specifies how to

  1. connect to a Logstash server for log writing
  2. connect to Elasticsearch/Kibana servers for log reading
  3. stream build logs from a websocket

The example configuration file included in the module has these defaults:


ost": "localhost",
esting": true,
ogstash": {
"port": 8050,
"configDir": "~/binder-control/services/logging/logstash/"


lasticsearch": {
"port": 8052,
"dir": "/data/binder/elasticsearch"


ibana": {
"port": 8053


treaming": {
"port": 2121


binder-control can launch Docker containers for Elasticsearch, Logstash and Kibana (with the same default values) through the binder-control start-service logging command. If you'd prefer to use existing logging infrastructure, specify the custom host/port in the config file.

If testing is enabled, the Winston logger will output to both Logstash and stdout (only Logstash otherwise).

install
install binder-logging
reader

lib/reader.js contains functions that wrap Elasticsearch queries to make it simpler to search through Binder logs. If you'd prefer to monitor a realtime stream of build logs, the streamLogs function is available (which will connect to Logstash's WebSocket output).

BinderLogReader.getLogs(opts, cb)

Get all historical logs, optionally matching an app name and optionally between before/after times

BinderLogReader.streamLogs(opts)

Stream logs for a given app (mandatory option), optionally since an after timestamp. Returns a through stream

usage
getReader = require('binder-logging/lib/reader')
reader = getReader({ host: '<custom logging host>' })
writer

lib/writer.js exposes a getInstance function that will return a Winston logger given a logger name. This logger exposes the standard logging api (logger.info, logger.error, …).

getInstance(name)

Returns a Winston logger that's connected to the Binder logging stack

usage
getLogger = require('binder-logging/lib/writer')
logger = getLogger('<logger name>')
er.info('this is an info message')

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.