diff --git a/apps/workflowengine/lib/Service/Logger.php b/apps/workflowengine/lib/Service/Logger.php index d5aca8f84b732..bfdb8b9ad4117 100644 --- a/apps/workflowengine/lib/Service/Logger.php +++ b/apps/workflowengine/lib/Service/Logger.php @@ -31,11 +31,12 @@ use OCP\ILogger; use OCP\Log\IDataLogger; use OCP\Log\ILogFactory; +use Psr\Log\LoggerInterface; class Logger { /** @var ILogger */ protected $generalLogger; - /** @var ILogger */ + /** @var LoggerInterface */ protected $flowLogger; /** @var IConfig */ private $config; @@ -54,7 +55,7 @@ protected function initLogger() { $default = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/flow.log'; $logFile = trim((string)$this->config->getAppValue(Application::APP_ID, 'logfile', $default)); if ($logFile !== '') { - $this->flowLogger = $this->logFactory->getCustomLogger($logFile); + $this->flowLogger = $this->logFactory->getCustomPsrLogger($logFile); } } diff --git a/lib/private/Log/LogFactory.php b/lib/private/Log/LogFactory.php index 7064fe324e6d3..6e6ded3758b52 100644 --- a/lib/private/Log/LogFactory.php +++ b/lib/private/Log/LogFactory.php @@ -31,6 +31,7 @@ use OCP\IServerContainer; use OCP\Log\ILogFactory; use OCP\Log\IWriter; +use Psr\Log\LoggerInterface; class LogFactory implements ILogFactory { /** @var IServerContainer */ @@ -70,6 +71,13 @@ public function getCustomLogger(string $path):ILogger { return new Log($log, $this->systemConfig); } + public function getCustomPsrLogger(string $path): LoggerInterface { + $log = $this->buildLogFile($path); + return new PsrLoggerAdapter( + new Log($log, $this->systemConfig) + ); + } + protected function buildLogFile(string $logFile = ''):File { $defaultLogFile = $this->systemConfig->getValue('datadirectory', \OC::$SERVERROOT.'/data').'/nextcloud.log'; if ($logFile === '') { diff --git a/lib/private/Log/PsrLoggerAdapter.php b/lib/private/Log/PsrLoggerAdapter.php index c488441da4100..8cd64bfe903ae 100644 --- a/lib/private/Log/PsrLoggerAdapter.php +++ b/lib/private/Log/PsrLoggerAdapter.php @@ -26,19 +26,21 @@ namespace OC\Log; +use OC\Log; use OCP\ILogger; +use OCP\Log\IDataLogger; use Psr\Log\InvalidArgumentException; use Psr\Log\LoggerInterface; use Throwable; use function array_key_exists; use function array_merge; -final class PsrLoggerAdapter implements LoggerInterface { +final class PsrLoggerAdapter implements LoggerInterface, IDataLogger { - /** @var ILogger */ + /** @var Log */ private $logger; - public function __construct(ILogger $logger) { + public function __construct(Log $logger) { $this->logger = $logger; } @@ -260,4 +262,8 @@ public function log($level, $message, array $context = []) { $this->logger->log($level, $message, $context); } } + + public function logData(string $message, array $data, array $context = []): void { + $this->logger->logData($message, $data, $context); + } } diff --git a/lib/public/Log/ILogFactory.php b/lib/public/Log/ILogFactory.php index a2cb02e87592a..54aa645615602 100644 --- a/lib/public/Log/ILogFactory.php +++ b/lib/public/Log/ILogFactory.php @@ -25,6 +25,7 @@ namespace OCP\Log; use OCP\ILogger; +use Psr\Log\LoggerInterface; /** * Interface ILogFactory @@ -43,6 +44,15 @@ public function get(string $type): IWriter; * @param string $path * @return ILogger * @since 14.0.0 + * @deprecated use \OCP\Log\ILogFactory::getCustomPsrLogger + * @see \OCP\Log\ILogFactory::getCustomPsrLogger */ public function getCustomLogger(string $path): ILogger; + + /** + * @param string $path + * @return LoggerInterface + * @since 22.0.0 + */ + public function getCustomPsrLogger(string $path): LoggerInterface; }