File: /home/confeduphaar/backip-old-files/plugins/vmpayment/eway/library/src/Rapid/Service/Logger.php
<?php
/**
* @version $Id: Logger.php 9790 2018-03-12 14:53:26Z alatak $
* @package VirtueMart
* @subpackage Plugins - Eway
* @package VirtueMart
* @subpackage Payment
* @link https://virtuemart.net
*
* @copyright Copyright (c) 2015 Web Active Corporation Pty Ltd
*
* @license MIT License GNU/GPL, see LICENSE.php
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
*/
namespace Eway\Rapid\Service;
use Eway\Rapid\Enum\LogLevel;
/**
* Class Logger Service
* A basic PSR-3 logger implementation, logs to PHP's error log
* @see http://www.php-fig.org/psr/psr-3/
*/
class Logger
{
/**
* System is unusable.
*
* @param string $message
* @param array $context
* @return null
*/
public function emergency($message, array $context = array())
{
self::log(LogLevel::EMERGENCY, $message, $context);
}
/**
* Action must be taken immediately.
*
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
* @param string $message
* @param array $context
* @return null
*/
public function alert($message, array $context = array())
{
self::log(LogLevel::ALERT, $message, $context);
}
/**
* Critical conditions.
*
* Example: Application component unavailable, unexpected exception.
*
* @param string $message
* @param array $context
* @return null
*/
public function critical($message, array $context = array())
{
self::log(LogLevel::CRITICAL, $message, $context);
}
/**
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
* @param string $message
* @param array $context
* @return null
*/
public function error($message, array $context = array())
{
self::log(LogLevel::ERROR, $message, $context);
}
/**
* Exceptional occurrences that are not errors.
*
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
* @param string $message
* @param array $context
* @return null
*/
public function warning($message, array $context = array())
{
self::log(LogLevel::WARNING, $message, $context);
}
/**
* Normal but significant events.
*
* @param string $message
* @param array $context
* @return null
*/
public function notice($message, array $context = array())
{
self::log(LogLevel::NOTICE, $message, $context);
}
/**
* Interesting events.
*
* Example: User logs in, SQL logs.
*
* @param string $message
* @param array $context
* @return null
*/
public function info($message, array $context = array())
{
self::log(LogLevel::INFO, $message, $context);
}
/**
* Detailed debug information.
*
* @param string $message
* @param array $context
* @return null
*/
public function debug($message, array $context = array())
{
self::log(LogLevel::DEBUG, $message, $context);
}
/**
* Logs with an arbitrary level.
* This logs to PHP's error log.
*
* @param mixed $level
* @param string $message
* @param array $context
* @return null
*/
public function log($level, $message, array $context = array())
{
if (!LogLevel::isValidValue($level)) {
throw new \InvalidArgumentException('Invalid loge level: '.$level);
}
$timestamp = time();
$log = sprintf(
'[%s] %s %s',
date('Y-m-d H:i:s', $timestamp),
strtoupper($level),
self::interpolate($message, $context)
);
error_log($log);
}
/**
* Interpolates context values into the message placeholders.
*/
private function interpolate($message, array $context = array())
{
$replaces = array();
foreach ($context as $key => $val) {
if (is_bool($val)) {
$val = '[bool: ' . (int) $val . ']';
} elseif (is_null($val)
|| is_scalar($val)
|| ( is_object($val) && method_exists($val, '__toString') )
) {
$val = (string) $val;
} elseif (is_array($val) || is_object($val)) {
$val = @json_encode($val);
} else {
$val = '[type: ' . gettype($val) . ']';
}
$replaces['{' . $key . '}'] = $val;
}
return strtr($message, $replaces);
}
}