Graylog: Using the Winston GELF package to send Node.js logs to Graylog
This documentation is part of the Using with Node.js guide. You can view the complete guide here: How to send logs from Node.js to Graylog.
👋 Welcome to Stackhero documentation
Stackhero offers a fully managed Graylog cloud solution designed for speed and simplicity. You can:
- Rely on an unlimited, dedicated SMTP email server included with your service.
- Apply updates effortlessly with a single click, with no manual intervention required.
- Use a custom domain name secured by HTTPS (for example, https://logs.your-company.com), providing your team with secure, direct access.
- Benefit from strong performance and security on a private, dedicated infrastructure, with no shared resources or noisy neighbours.
Focus on your data, not your tools: you can get started with Stackhero's Graylog cloud hosting solution in just a few minutes.
warning It is preferable to use the
graylog2package unless Winston is already part of your project. In that case, you can replace it withwinston-gelf.
To install the Winston GELF package, run:
npm install winston-gelf
If Winston is not already included in your project, add it with:
npm install winston
Here is a basic configuration:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// See all gelfPro options here: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Replace with your Graylog domain
port: 12201,
}
}
})
]
});
// Example of an informational log
logger.info('This is a log information');
// Example of an error log
try {
throw Error('This is an example error');
}
catch(error) {
logger.warn({ message: 'Error triggered', error });
}
Do not forget to configure your Graylog input (see details below).