Usage of logging in the codeΒΆ

OXID eShop exposes a PSR-3 compatible logger implementation, which is provided by Registry::getLogger(). Please also read about the system architecture and configuration / extension in your project.

The following code example uses different logger methods, which correspond to different log levels. It is a best practice to pass some context information to the logger. In the case of an exception, this is the only way to get information about the stack trace.

$logger = Registry::getLogger();
try () {
    // Do something. E.g. Apply some discount.
    $logger->debug(
        'Discount applied',
        [
            'class'  => __CLASS__,
            'method' => __FUNCTION__,
            'shopId' => $shopId,
            'userId' => $userId,
            'amount' => $amount,
        ]
    );
} catch (\Exception $exception) {
    // report exception
    $logger->error($exception->getMessage(), [$exception]);

    // Handle the exception. E.g. cleanup
}

Note

Only the methods defined by PSR-3, are exposed.

For the sake of compatibility you will not be able to use implementation specific methods like \Monolog\Logger::addError or \Monolog\Logger::pushProcessor, as the implementation itself will not be exposed.

If you are writing a module for a specific e-commerce project you are able to provide fine grained information by using different log levels, which you can turn on or of by setting the minimum log level in the OXID eShop configuration file config.inc.php.