winston-winlog4
is a custom transport for Winston, designed to log messages to the Windows Event Log. It is a fork of winston-winlog2
and uses the node-eventlog
library to write structured log data directly to the Windows Event Viewer. This transport is ideal for applications running on Windows where centralized, system-wide logging is beneficial.
Install via npm:
npm install winston-winlog4
To use winston-winlog4
, import and add it to your Winston logger's transports.
import winston from 'winston';
import EventLogTransport from 'winston-winlog4';
const logger = winston.createLogger({
transports: [
new EventLogTransport({
source: 'MyApplicationName', // Optional, defaults to 'node'
level: 'info' // Set the minimum level for this transport
})
]
});
// Example logs
logger.info('Application started');
logger.warn('Potential issue detected');
logger.error('An error occurred');
This will log messages to the Windows Event Log under the specified source name, with levels info
, warn
, or error
.
The EventLogTransport
class accepts the following options:
Option | Type | Description | Default |
---|---|---|---|
source |
string |
The source name shown in the Event Viewer | node |
level |
string |
The minimum level of messages to log (info , warn , error ) |
info |
- Direct Windows Event Logging: Logs are sent to the Windows Event Log, accessible in the Windows Event Viewer.
- JSON Metadata Support: Includes metadata with each log, formatted as a JSON string, for easier log analysis.
- Supported Levels: Only logs at
info
,warn
, orerror
levels are supported to match typical Windows Event Viewer log levels.
Metadata is supported in the info
parameter of the log
function, where it is converted to a JSON string using flatted
. If metadata cannot be parsed, it falls back gracefully with an error message. Any newlines in the log messages are removed for compatibility with the Event Viewer.
To clone the repository and contribute:
git clone https://github.com/matteogheza/winston-winlog4
cd winston-winlog4
npm install
This module is licensed under the MIT License. See the LICENSE file for details.