Logging DSL by thekid · Pull Request #6 · xp-framework/logging

Example

// Before
$cat= (new LogCategory())->withAppender(new ColoredConsoleAppender());

// New
$cat= Logging::all()->toConsole();

Modifying category, level and layout

// Set category
$cat= Logging::named('sql')->toFile('sql.log');

// Change level
$cat= Logging::of(LogLevel::ERROR | LogLevel::WARN)->toConsole();

// Change layout
$cat= Logging::using(new PatternLayout('...'))->toSyslog(LOG_USER);

API

public abstract class util.log.Logging {

  // Default
  public static util.log.LogSetup all()

  // Shorthands
  public static util.log.LogSetup named(string $category)
  public static util.log.LogSetup of(int $level)
  public static util.log.LogSetup using(util.log.Layout $layout)
}

public class util.log.LogSetup implements lang.Value {

  // Fluent interface
  public util.log.LogSetup named(string $category)
  public util.log.LogSetup of(string $level)
  public util.log.LogSetup using(util.log.Layout $layout)

  // Create categories
  public util.log.LogCategory to(util.log.Appender... $appenders)
  public util.log.LogCategory toConsole(bool $colors)
  public util.log.LogCategory toFile(string|io.Path|io.File $file)
  public util.log.LogCategory toSyslog(int $facility, string $identifier)

  // Value implementation
  public string toString()
  public string hashCode()
  public int compareTo(var $value)
}