Skip to content

jojo8356/ulogger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ULogger

Bibliothèque de logging Java inspirée du module logging de Python. Zéro dépendance obligatoire, Java 21+.

Fonctionnalités

  • Niveaux : ALL, DEBUG, INFO, WARNING, ERROR, CRITICAL, OFF
  • Hiérarchie de loggers avec propagation (noms séparés par .)
  • Handlers : Console (couleurs ANSI via UColor), File, RotatingFile, TimedRotatingFile, SizeAndTimeRotatingFile, HTTP, Syslog, SMTP
  • Formatters : Pattern ({time}, {level}, {message}, {mdc.*}, {extra.*}, ...) et JSON
  • Filtres : NameFilter, LevelRangeFilter, RateLimitFilter, lambda custom
  • MDC (Mapped Diagnostic Context) thread-local
  • Configuration par fichier .properties ou YAML, avec résolution ${ENV_VAR:-default}
  • Hot reload de la configuration via WatchService
  • Placeholders {} résolus paresseusement (style SLF4J)
  • Stack traces avec chaînes Caused by

Installation

<dependency>
    <groupId>ulogger</groupId>
    <artifactId>ulogger</artifactId>
    <version>1.0.0</version>
</dependency>

Utilisation rapide

import ulogger.*;

// Configuration one-liner
ULogger.basicConfig();

Logger log = ULogger.getLogger(MyApp.class);
log.info("Application démarrée");
log.debug("Valeur: {}", value);
log.error("Erreur: {}", msg, exception);

Configuration avancée

ULogger.basicConfig(config -> config
    .level(Level.DEBUG)
    .format("{time} [{level}] {name} - {message}")
    .colored(true)
);

Configuration par fichier

# logging.properties
root.level=INFO
root.handlers=console,file

handler.console.type=console
handler.console.level=DEBUG
handler.console.format={time} [{level}] {message}
handler.console.colored=true

handler.file.type=file
handler.file.level=INFO
handler.file.filename=/var/log/app.log
handler.file.format={time} [{level}] {name} - {message}

logger.com.myapp.level=DEBUG
logger.com.myapp.propagate=false
ULogger.configure("logging.properties");

Rotation des fichiers

handler.rotating.type=rotating
handler.rotating.filename=/var/log/app.log
handler.rotating.maxBytes=10485760
handler.rotating.backupCount=5
handler.rotating.format={time} [{level}] {message}

MDC (Mapped Diagnostic Context)

import ulogger.context.MDC;

MDC.put("requestId", "abc-123");
MDC.put("userId", "42");
log.info("Requête traitée");  // format: {mdc.requestId}
MDC.clear();

Structure du projet

ulogger/
├── Level, Logger, LogRecord, ULogger
├── format/    PatternFormatter, JsonFormatter
├── handler/   Console, File, Rotating, TimedRotating, HTTP, Syslog, SMTP
├── filter/    NameFilter, LevelRangeFilter, RateLimitFilter
├── config/    PropertiesConfigurator, YamlConfigurator, ConfigWatcher
├── context/   MDC
└── exception/ ULoggerConfigException

Tests

mvn test   # 69 tests

Licence

MIT

About

Java logging library inspired by Python's logging module

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages