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.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Generic Winston Logger Service?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ecnu-icalk-generic-winston-logger-service)
---
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