Skip to content

CodeCornTech/corn-logger

Repository files navigation

🌽 @codecorn/corn-logger

🧠 Logger TypeScript avanzato per Node.js con supporto a colori, salvataggio su file, sub-contesto e livello log.
Colori, contesto, stack trace, log file, livelli e supporto a .env. Basato su console-log-colors e ottimizzato per ambienti CLI/DevOps.

@codecorn/corn-logger

Downloads npm version GitHub stars GitHub issues Tests MIT License


πŸš€ Installazione

npm install @codecorn/corn-logger

oppure con yarn:

yarn add @codecorn/corn-logger

⚠️ Il logger legge automaticamente variabili da .env se presenti (dotenv.config() è incluso).


✨ Funzionalità

  • βœ… Log colorati con contesto e sub-contesto
  • βœ… Livelli: DEBUG, INFO, WARN, ERROR
  • βœ… Logging condizionale su file (process.env.LOG_STORE=true)
  • βœ… Supporto a stack trace errori
  • βœ… Pretty-print JSON e oggetti complessi
  • βœ… Time e date IT friendly (dd/MM/yyyy HH:mm:ss)

πŸ”§ Setup base

// index.ts o bootstrap
import * as dotenv from 'dotenv';
dotenv.config();

import { logInfo, logError, logWarn, logDebug, logMessage } from '@codecorn/corn-logger';

logMessage('DEBUG', 'BOOT', 'Logger pronto πŸš€');
logInfo('MAIN', 'Tutto ok');
logWarn('INIT', { warning: 'config mancante' });
logError('DB', new Error('Connessione fallita'), 'DBConnect');
logDebug('SERVICE', { id: 123, state: 'running' }, 'JobRunner');

πŸ”₯ Esempi

logInfo('SERVER', 'Server avviato sulla porta 3000');

logWarn('DB', 'Connessione lenta rilevata', 'Postgres');

logError('API', new Error('Endpoint fallito'), 'GET /api/user');

logDebug('AUTH', { user: 'admin', role: 'superuser' }, 'SessionPayload');

Tutti i log vengono stampati in console colorata e salvati in logs/YYYY-MM-DD.log se LOG_STORE=true.


βš™οΈ Variabili .env e πŸ“¦ Logger su File

Per abilitare la scrittura su file nella directory logs/:

LOG_STORE=true
LOG_DIR=test_log

Se LOG_STORE=true, ogni log sarΓ  anche salvato in file logs/YYYY-MM-DD.log.

Output nel formato:

[2025-08-05 14:33:05] [SERVICE] DEBUG > JobRunner:
{ id: 123, state: 'running' }

✨ Features

  • βœ… Colorazione ANSI per ogni livello log
  • βœ… Sub-context support (logError(context, err, subContext))
  • βœ… Supporto a Error, object, string, null, undefined
  • βœ… Salvataggio su file con timestamp (LOG_STORE=true)
  • βœ… Estendibile e minimalista

πŸ”§ Scripts utili

Nel tuo package.json:

"scripts": {
  "build": "tsc",
  "dev": "tsc --watch",
  "lint": "tsc --noEmit",
  "prepare": "npm run build"
}

πŸ—‚ Struttura progetto

corn-logger/
β”œβ”€β”€ dist/              # Build finale JS
β”œβ”€β”€ src/               # Codice sorgente TS
β”œβ”€β”€ types/             # Tipi definiti
β”œβ”€β”€ index.ts           # Entry point
β”œβ”€β”€ index.ts           # Cli script
β”œβ”€β”€ .env               # (opzionale)
β”œβ”€β”€ .npmignore
β”œβ”€β”€ package.json
β”œβ”€β”€ README.md
β”œβ”€β”€ LICENSE
└── tsconfig.json

πŸ›  Integrazione CLI (facoltativa)

Puoi usare il logger anche direttamente da terminale in diversi modi:

βœ… 1. Esecuzione diretta con npx

npx cornlog --context "SYSTEM" --level info --message "Avvio completato"

βœ… 2. Esecuzione tramite npm run

Usa lo script definito nel tuo package.json:

npm run cli -- -c SYSTEM -l info -m "Avvio completato"

Attenzione al doppio --: serve per passare argomenti al comando CLI.


βœ… 3. Esecuzione via npm link (globale)

Se hai eseguito:

npm run build
npm link

Puoi usare direttamente il comando globale ovunque nel sistema:

cornlog -c SYSTEM -l info -m "Avvio completato"

🎯 Altri esempi CLI

cornlog -c DB -l warn -m "Query lenta" -s "postgres"
cornlog -c API -l error -m "Token non valido" -s "AuthMiddleware"
cornlog -c JOB -l debug -m "Task schedulato" -s "cron-runner"
cornlog -c INIT -l info -m "Configurazione caricata"

I log verranno colorati e stampati a terminale. Se LOG_STORE=true nel tuo .env, verranno anche salvati in logs/YYYY-MM-DD.log.


πŸ“– Guida rapida CLI (--help)

Per vedere tutte le opzioni disponibili della CLI, puoi usare:

cornlog --help

Output:

Usage: cornlog [options]

🧠 Logger CLI CodeCorn - log colorato e opzionale su file

Options:
  -c, --context <context>     Contesto del log (es: SYSTEM, DB, API) [obbligatorio]
  -l, --level <level>         Livello log: info | warn | error | debug [obbligatorio]
  -m, --message <message>     Messaggio da loggare [obbligatorio]
  -s, --sub <subContext>      Sotto-contesto opzionale
  -V, --version               Mostra versione
  -h, --help                  Mostra questo aiuto

⚠️ Tutte le opzioni marcate come obbligatorie devono essere specificate, altrimenti la CLI restituirà un errore.


πŸ§ͺ Test

npm run lint
npm test

πŸ‘€ Maintainer

πŸ‘¨β€πŸ’» Federico Girolami

Full Stack Developer | System Integrator | Digital Solution Architect πŸš€

πŸ“« Get in Touch

🌐 Website: codecorn.it *(Under Construction)*

πŸ“§ Email: f.girolami@codecorn.it

πŸ™ GitHub: github.com/fgirolami29


πŸ“ License

MIT Β© CodeCornβ„’

Distribuito sotto licenza MIT.


🀝 Contribuisci

Pull request benvenute. Per grosse modifiche apri una issue prima di iniziare.

Powered by CodeCornβ„’ πŸš€

About

logger codecorn console-log-colors chalk node js ts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published