winston-loki
Version:
A Winston transport for Grafana Loki
64 lines (51 loc) • 2.89 kB
Markdown
# winston-loki
[](https://badge.fury.io/js/winston-loki)
[](https://travis-ci.com/JaniAnttonen/winston-loki)
[](https://coveralls.io/github/JaniAnttonen/winston-loki?branch=master)
[](https://standardjs.com)
A Grafana Loki transport for the nodejs logging library Winston.
## Usage
This Winston transport is used similarly to other Winston transports. Require winston and define a new LokiTransport() inside its options when creating it.
### Options
LokiTransport() takes a Javascript object as an input. These are the options that are available, __required in bold__:
| **Parameter** | **Description** | **Example** | **Default** |
| ------------------ | --------------------------------------------------------- | -----------------------| ------------- |
| __`host`__ | URL for Grafana Loki | http://localhost:3100 | null |
| `interval` | The interval at which batched logs are sent in seconds | 30 | 5 |
| `json` | Use JSON instead of Protobuf for transport | true | false |
| `batching` | If batching is not used, the logs are sent as they come | true | true |
| `clearOnError` | Discard any logs that result in an error during transport | true | false |
| `replaceOnError` | Replace timestamps and retry on error | true | false |
| `replaceTimestamp` | Replace any log timestamps with Date.now() | true | false |
### Example
```js
const { createLogger, transports } = require("winston");
const LokiTransport = require("winston-loki");
const options = {
...,
transports: [
new LokiTransport({
host: "http://localhost:3100"
})
]
...
};
const logger = createLogger(options);
```
## Developing
```sh
npm install
npm link
cd ~/your_project
npm link winston-loki
npm install
```
And you should have a working, requirable winston-loki package under your project's node_modules.
Refer to https://github.com/grafana/loki/blob/master/docs/api.md for documentation about the available endpoints, data formats etc.
Grafana Loki *doesn't have any official releases or version numbers* as of now, so if the API is changed, it's going to be fun, but it's working as of now.
### Run tests
```sh
npm test
```
Write new ones under `/test`
TODO: Remove *got* dependency