π§ 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 suconsole-log-colors
e ottimizzato per ambienti CLI/DevOps.
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).
- β 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
)
// 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');
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
seLOG_STORE=true
.
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 filelogs/YYYY-MM-DD.log
.
Output nel formato:
[2025-08-05 14:33:05] [SERVICE] DEBUG > JobRunner:
{ id: 123, state: 'running' }
- β 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
Nel tuo package.json
:
"scripts": {
"build": "tsc",
"dev": "tsc --watch",
"lint": "tsc --noEmit",
"prepare": "npm run build"
}
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
Puoi usare il logger anche direttamente da terminale in diversi modi:
npx cornlog --context "SYSTEM" --level info --message "Avvio completato"
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.
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"
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 inlogs/YYYY-MM-DD.log
.
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.
npm run lint
npm test
π¨βπ» 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
MIT Β© CodeCornβ’
Distribuito sotto licenza MIT.
Pull request benvenute. Per grosse modifiche apri una issue prima di iniziare.
Powered by CodeCornβ’ π