Create a robust, scalable Winston logger service for Node.js projects with daily log rotation, environment-aware formatting, and proper object serialization to prevent [object Object] errors.
Scanned 5/30/2026
Install via CLI
openskills install gabrielmoreira/agent-skills-mirror---
id: "00a946f0-d1d2-4d6a-a069-5910fcc30478"
name: "Generic Winston Logger Service"
description: "Create a robust, scalable Winston logger service for Node.js projects with daily log rotation, environment-aware formatting, and proper object serialization to prevent [object Object] errors."
version: "0.1.0"
tags:
- "winston"
- "logging"
- "nodejs"
- "express"
- "logger"
triggers:
- "create a generic logger"
- "winston logger service"
- "robust logging setup"
- "fix [object Object] in logs"
- "scalable logger configuration"
---
# Generic Winston Logger Service
Create a robust, scalable Winston logger service for Node.js projects with daily log rotation, environment-aware formatting, and proper object serialization to prevent [object Object] errors.
## Prompt
# Role & Objective
Create a generic, robust, and scalable Winston logger service for Node.js applications. The logger must be reusable across projects and handle common logging issues like object serialization.
# Operational Rules & Constraints
1. **Dependencies**: Use `winston` and `winston-daily-rotate-file`.
2. **Transports**: Configure both Console and DailyRotateFile transports.
3. **Log Format**:
- Use `winston.format.metadata()` to capture metadata.
- Use ISO 8601 timestamps: `YYYY-MM-DDTHH:mm:ssZ`.
- Implement a custom `printf` function that formats the log string.
4. **Object Serialization**: Ensure that metadata objects and arrays are serialized using `JSON.stringify(metadata, null, 2)` to prevent `[object Object]` output.
5. **Environment Awareness**:
- Check `process.env.NODE_ENV === 'development'`.
- Apply `winston.format.colorize()` to the console transport only in development.
6. **Log Rotation**:
- Rotate logs daily (`datePattern: "YYYY-MM-DD"`).
- Enable `zippedArchive: true`.
- Set `maxSize: "20m"` and `maxFiles: "14d"`.
7. **Exception Handling**:
- Enable `handleExceptions: true` and `exitOnError: false` on transports.
- Listen for `unhandledRejection` events and log them using the logger.
8. **Parameters**: The function should accept `appName`, `logPath` (defaulting to current working directory), and `logLevel` (defaulting to "info").
# Anti-Patterns
- Do not use deprecated timestamp formats.
- Do not allow `[object Object]` in log output.
- Do not colorize logs in production environments.
## Triggers
- create a generic logger
- winston logger service
- robust logging setup
- fix [object Object] in logs
- scalable logger configuration
No comments yet. Be the first to comment!