Winston-Axios
An axios transport for winston which allows for sending REST requests to an external API.
Usage
Setup
const { AxiosTransport } = require('winston-axios');
or
import { AxiosTransport } from 'winston-axios';
Create a logger with an Axios Transport
const winston = require('winston');
const { AxiosTransport } = require('winston-axios');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new AxiosTransport({
url: 'http://localhost:9999',
path: '/log',
auth: 'abc123',
}),
],
});
Add an Axios Transport to an existing logger
const { AxiosTransport } = require('winston-axios');
logger.add(
new AxiosTransport({
host: 'http://localhost:9999/log'
})
);
Receiving the log message
You can simply use logger.info(request.body);
to log the request in the external API as Winston can resolve the body.
More information on body formatting is to come.
Example
A production example of using this transport is available here: photoprism-helper logger.ts
Here is the relevant code, omitting anything not relevant to the transport:
import { createLogger, transports } from 'winston';
import { AxiosTransport } from 'winston-axios';
const config = {
levelConsole: 'info',
url: 'http://apiurl.com'
key: 'abc123'
}
export const logger = createLogger({
transports: [
new transports.Console({ level: config.levelConsole }),
],
});
logger.add(
new AxiosTransport({
url: config.url,
path: '/log',
auth: config.key,
})
);
Documentation
- AxiosTransportOptions
Options for Axios Transport.
- AxiosTransport
Transport for Winston that sends log messages to a remote server using Axios.
AxiosTransportOptions
Options for Axios Transport.
Param | Type | Description |
---|
url | string | The url to send the logs to. |
path | string | The path to send the logs to. The destination url will resolve to url + path. |
auth | string | The authentication token to send with the logs. Will override any auth headers provided in headers. |
authType | TransportAuthType | The type of authentication to use. |
method | TransportMethod | The method to use when sending the logs. |
headers | AxiosRequestHeaders | The headers to send with the logs. |
AxiosTransport
Transport for Winston that sends log messages to a remote server using Axios.
See: AxiosTransportOptions
new AxiosTransport(options)
Example
const logger = createLogger({
transports: [
new AxiosTransport({
url: 'http://localhost:3000',
path: '/logs',
}),
],
});
logger.log({ level: 'info', message: 'Hello World' });