Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clubedaentrega/log-sink
A service for streaming, storage and query of log data
https://github.com/clubedaentrega/log-sink
Last synced: about 1 month ago
JSON representation
A service for streaming, storage and query of log data
- Host: GitHub
- URL: https://github.com/clubedaentrega/log-sink
- Owner: clubedaentrega
- License: mit
- Created: 2014-12-30T20:08:31.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2018-03-21T14:41:24.000Z (almost 7 years ago)
- Last Synced: 2024-11-27T17:01:40.036Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 638 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE
Awesome Lists containing this project
README
# Log Sink
[![Build Status](https://travis-ci.org/clubedaentrega/log-sink.svg?branch=master)](https://travis-ci.org/clubedaentrega/log-sink)
[![Dependency Status](https://david-dm.org/clubedaentrega/log-sink.svg)](https://david-dm.org/clubedaentrega/log-sink)A service for streaming, storage and query of log data.
This is the client-side implementation for both Nodejs and the browser. For the server-side implementation and server public API, see [log-sink-server](https://github.com/clubedaentrega/log-sink-server).
## Install
`npm install log-sink --save`## Usage
```js
var sink = require('log-sink'),
fs = require('fs')// Connect to log sink server using a secure connection
sink.connect('my-user', 'my-password', {
host: 'localhost',
port: 8018,
secure: true,
// If the server is using a self-signed certificate,
// include it here
ca: fs.readFileSync('keys/self-signed-cert.pem')
})
// In the browser, use:
sink.connect('my-user', 'my-password', 'wss://localhost:8019')// Write
// sink.{debug,info,warn,error,fatal}(name, [message], [extra])
// If the connection is not ready yet, it will be buffered and
// executed when it gets ready
sink.info('readme', 'My first log', ['custom data', 17])
sink.error('readme', new Error('We had a problem'))// Or avoid typing the required name every time
var logger = sink.bindName('readme')
logger.debug('Got here!')// Streaming
sink.stream(function (err, stream) {
if (err) throw err
// stream is a ReadableStream in object mode
stream.on('data', function (log) {
console.log(log)
})
// call stream.stop() when you are done
})// Querying
sink.query({
level: {
min: sink.LEVEL.WARN
}
}, function (err, logs) {
if (err) throw err
console.log(logs)
})
```The only difference between the use in Nodejs and browsers is the third `connect` parameter. In Nodejs, it's an object; for browser it's the WS url.
Browsers will connect using WebSocket and Nodejs will use TCP directly. Note that the ports are NOT the same.
## Multiple connections
```js
var sink = require('log-sink'),
conn = new sink.Connection,
conn2 = new sink.Connectionconn.connect('user', 'pass', options)
conn2.connect('user2', 'pass2', options2)
```## Log Sink
To understand more about log sink, read the doc on the [server project](https://github.com/clubedaentrega/log-sink-server)## Docs
All public methods are described in the [generated docs](http://clubedaentrega.github.io/log-sink)