* @copyright 2013 coderkun (http://www.coderkun.de) * @license http://www.gnu.org/licenses/gpl.html * @link http://www.coderkun.de/projects/nre */ namespace nre\core; /** * Class to log messages to different targets. * * @author coderkun */ class Logger { /** * Log mode: Detect automatic * * @var int */ const LOGMODE_AUTO = 0; /** * Log mode: Print to screen * * @var int */ const LOGMODE_SCREEN = 1; /** * Log mode: Use PHP-logging mechanism * * @var int */ const LOGMODE_PHP = 2; /** * Do not auto-log to screen * * @var boolean */ private $autoLogToScreenDisabled = false; /** * Construct a new logger. */ public function __construct() { } /** * Log a message. * * @param string $message Message to log * @param int $logMode Log mode to use */ public function log($message, $logMode=self::LOGMODE_AUTO) { // Choose log mode automatically if($logMode == self::LOGMODE_AUTO) { $logMode = $this->getAutoLogMode(); } // Print message to screen if($logMode & self::LOGMODE_SCREEN) { $this->logToScreen($message); } // Use PHP-logging mechanism if($logMode & self::LOGMODE_PHP) { $this->logToPhp($message); } } /** * Disable logging to screen when the log mode is automatically * detected. */ public function disableAutoLogToScreen() { $this->autoLogToScreenDisabled = true; } /** * Print a message to screen. * * @param string $message Message to print */ private function logToScreen($message) { echo "$message
\n"; } /** * Log a message by using PHP-logging mechanism. * * @param string $message Message to log */ private function logToPhp($message) { error_log($message, 0); } /** * Detect log mode automatically by distinguishing between * production and test environment. * * @return int Automatically detected log mode */ private function getAutoLogMode() { return ($this->isLocalhost() && !$this->autoLogToScreenDisabled) ? self::LOGMODE_SCREEN : self::LOGMODE_PHP; } /** * Detect if the server is running as localhost without domain. * * @return boolean Wheather server is running as localhost or not */ private function isLocalhost() { return (strpos($_SERVER['HTTP_HOST'], '.') === false); } } ?>