64 lines
1.8 KiB
PHP
64 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace com\fwdekker\deathnotifier;
|
|
|
|
use Monolog\ErrorHandler;
|
|
use Monolog\Handler\StreamHandler;
|
|
use Monolog\Logger;
|
|
|
|
|
|
/**
|
|
* Helps with creating loggers.
|
|
*
|
|
* Contains global state, but reduces unnecessary parameter passing and unused fields.
|
|
*/
|
|
class LoggerUtil
|
|
{
|
|
/**
|
|
* @var Logger|null the logger instance for general log events not covered by other loggers
|
|
*/
|
|
private static ?Logger $general_logger = null;
|
|
/**
|
|
* @var Logger|null the logger instance for database log events
|
|
*/
|
|
private static ?Logger $db_logger = null;
|
|
|
|
|
|
/**
|
|
* Returns a general logger with the given name.
|
|
*
|
|
* @param string $name the name of the general logger to return
|
|
* @return Logger a general logger with the given name
|
|
*/
|
|
public static function with_name(string $name = "general"): Logger
|
|
{
|
|
if (self::$general_logger === null) {
|
|
$config = Config::get("logger");
|
|
|
|
self::$general_logger = new Logger("general");
|
|
self::$general_logger->pushHandler(new StreamHandler($config["filename"], $config["level"]));
|
|
ErrorHandler::register(self::$general_logger);
|
|
}
|
|
|
|
return self::$general_logger->withName($name);
|
|
}
|
|
|
|
/**
|
|
* Returns a database logger with the given name.
|
|
*
|
|
* @param string $name the name of the database logger to return
|
|
* @return Logger a database logger with the given name
|
|
*/
|
|
public static function db_with_name(string $name = "database"): Logger
|
|
{
|
|
if (self::$db_logger === null) {
|
|
$config = Config::get("logger_db");
|
|
|
|
self::$db_logger = new Logger("general");
|
|
self::$db_logger->pushHandler(new StreamHandler($config["filename"], $config["level"]));
|
|
}
|
|
|
|
return self::$db_logger->withName($name);
|
|
}
|
|
}
|