Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stylet/stdout-mq
A transport for sending logs from stdout/stderr over MQ brokers
https://github.com/stylet/stdout-mq
mq-broker pino pino-logs pino-transport rabbitmq
Last synced: 2 days ago
JSON representation
A transport for sending logs from stdout/stderr over MQ brokers
- Host: GitHub
- URL: https://github.com/stylet/stdout-mq
- Owner: StyleT
- License: apache-2.0
- Created: 2020-02-18T16:51:14.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-12T12:17:31.000Z (almost 2 years ago)
- Last Synced: 2024-04-29T18:22:51.283Z (8 months ago)
- Topics: mq-broker, pino, pino-logs, pino-transport, rabbitmq
- Language: JavaScript
- Size: 267 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# stdout-mq
[![Build Status](https://travis-ci.com/StyleT/stdout-mq.svg?branch=master)](https://travis-ci.com/StyleT/stdout-mq)Pino-mq will take all messages received on process.stdin and send them over a message bus using JSON serialization;
## Installation
```
npm install -g stdout-mq
```## Quick Example
Bash pipes:
```
node app.js 2>&1 | stdout-mq -u "amqp://guest:guest@localhost/" -q "pino-logs"
```Via sub-process, optimized for use with Docker:
```
stdout-mq -u "amqp://guest:guest@localhost/" -q "pino-logs" --spawnProcess="node app.js"
```## Command line switches
- `--type` (`-t`): MQ type of transport to be used (default 'RABBITMQ')
- `--uri` (`-u`): uri for connecting to MQ broker
- `--queue` (`-q`): queue to be used for sending messages
- `--fields` (`-f`): comma separated fields for filtering messages before sending
- `--exchange` (`-e`): exchange name to be used in case of rabbitmq transport
- `--config` (`-c`): path to config file (JSON); switches take precedence
- `--generateConfig` (`-g`): create pino-mq.json config file with default options
- `--help` (`-h`): display help
- `--version` (`-v`): display version
- `--wrapWith` (`-ww`): wrap a message with custom data where %DATA% will be replaced with a message e.g. `{"data": "%DATA%", "customProp": "customData"}`
- `--spawnProcess` (`-sp`): Spawns a sub-process using specified command & listens it's stdout/stderr## Configuration JSON File
by using `--generateConfig` it will create `pino-mq.json` file with all available configuration
options;```
{
"type": "RABBITMQ",
"uri": "amqp://guest:guest@localhost/",
"exchange": "",
"queue": "stdout-mq",
"fields": []
}
```## Broker connection
* `uri` option will follow URI specification for defining connection to a host:```
://[user[:password]@]host[:port][/path][?query]
```
where `protocol`, `path` and `fragment` will be specific for each type of broker## Configuration via environment variables
You may specify `MQ_PROTOCOL`, `MQ_LOGIN`, `MQ_PASSWORD`, `MQ_HOST` as env variables, these variables are going to be used to create URI for connecting to MQ broker, in this way, you can avoid using `--uri` (`-u`) param in CLI## Queues configuration
queue configuration has a priority in defining behaviour for stdout-mq; if more than one is specified, configuration will take this precedence:1. `queue` all messages will be sent on this queue
#### RabbitMQ specific options
For RabbitMQ type there is an extra option:
* `--exchange`: if you want to use a specific exchange for your queues or you want to use topics instead of queues than you have to pass it to pino-mq configuration; topics are a more powerful distribution mechanism than queues and explaining it is beyond the scope of this module ([RabbitMQ Topics tutorial](https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html))## Fields filtering
in case is needed to filter log messages fields you can use `fields` option:
* from command line:
* `--fields "time,level,msg"`
* from configuration json file:
* `"fields":["time","level","msg"]`## LICENSE
[Apache-2.0 License](https://github.com/StyleT/stdout-mq/blob/master/LICENSE.txt)