A simple transport for sending logs to Humio using the Winston logger.
npm install --save humio-winston
import winston from 'winston';
import HumioTransport from 'humio-winston';
const logger = winston.createLogger({
format: winston.format.simple(),
transports: [
// The only required option is your Humio ingest token
new HumioTransport({
ingestToken: '<YOUR INGEST TOKEN HERE>'
}),
],
});
logger.info('Hello, world!');
You can also apply tags to all logs sent to Humio through the transport. See the Humio docs for more information about tags.
new HumioTransport({
ingestToken: '<YOUR INGEST TOKEN HERE>',
tags: {
app: 'example',
},
})
You can set a logging level to the Humio transport that overrides the logger's level. This is useful when you only want to send logs at or above a certain level and send more verbose logs elsewhere.
const logger = winston.createLogger({
level: 'debug', // By default, all transports log at the 'debug' level
transports: [
new winston.transports.Console(),
new HumioTransport({
level: 'info', // Only send logs that are 'info' or above to Humio
ingestToken: '<YOUR INGEST TOKEN HERE>',
}),
],
});
You can pass a callback to the HumioTransport
constructor which will be called after each log is sent to Humio. The callback signature is:
(err: Error | undefined) => void
If a log cannot be sent for whatever reason (such as a dropped network connection), the argument will be an Error
containing the error message. On successful transmission, the argument will be undefined
.
const logCallback = err => {
if (err) {
console.error('Failed to send log to Humio: '+ err.message);
}
};
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new HumioTransport({
ingestToken: '<YOUR INGEST TOKEN HERE>',
callback: logCallback,
}),
],
});
Some of the tests send real logs to Humio, meaning that they require a real ingest token. If you want to run the tests yourself, you should create an ingest token just for the test logs.
You must set the HUMIO_INGEST_TOKEN
environment variable before running tests.
HUMIO_INGEST_TOKEN=abc123 npm run test