135 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace ManiaControl;
 | 
						|
 | 
						|
use ManiaControl\Files\FileUtil;
 | 
						|
use ManiaControl\Utils\Formatter;
 | 
						|
 | 
						|
/**
 | 
						|
 * ManiaControl Logger Class
 | 
						|
 *
 | 
						|
 * @author    ManiaControl Team <mail@maniacontrol.com>
 | 
						|
 * @copyright 2014 ManiaControl Team
 | 
						|
 * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | 
						|
 */
 | 
						|
abstract class Logger {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Setup the logging mechanism
 | 
						|
	 */
 | 
						|
	public static function setup() {
 | 
						|
		self::setupErrorLogFileName();
 | 
						|
		self::cleanLogsFolder();
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Set the error log file name
 | 
						|
	 */
 | 
						|
	private static function setupErrorLogFileName() {
 | 
						|
		$logsFolder = self::getLogsFolder();
 | 
						|
		if ($logsFolder) {
 | 
						|
			$logFileName = $logsFolder . 'ManiaControl';
 | 
						|
			if (!defined('LOG_NAME_USE_DATE') || LOG_NAME_USE_DATE) {
 | 
						|
				$logFileName .= '_' . date('Y-m-d');
 | 
						|
			}
 | 
						|
			if (!defined('LOG_NAME_USE_PID') || LOG_NAME_USE_PID) {
 | 
						|
				$logFileName .= '_' . getmypid();
 | 
						|
			}
 | 
						|
			$logFileName .= '.log';
 | 
						|
			ini_set('error_log', $logFileName);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get the logs folder and create it if necessary
 | 
						|
	 *
 | 
						|
	 * @return string
 | 
						|
	 */
 | 
						|
	public static function getLogsFolder() {
 | 
						|
		$logsFolder = MANIACONTROL_PATH . 'logs' . DIRECTORY_SEPARATOR;
 | 
						|
		if (!is_dir($logsFolder) && !mkdir($logsFolder)) {
 | 
						|
			self::logError("Couldn't create the logs folder!");
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		if (!is_writeable($logsFolder)) {
 | 
						|
			self::logError("ManiaControl doesn't have the necessary write rights for the logs folder!");
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		return $logsFolder;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Delete old ManiaControl log files
 | 
						|
	 *
 | 
						|
	 * @return bool
 | 
						|
	 */
 | 
						|
	private static function cleanLogsFolder() {
 | 
						|
		$logsFolderPath = self::getLogsFolder();
 | 
						|
		return FileUtil::cleanDirectory($logsFolderPath);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Log and output the given Error message
 | 
						|
	 *
 | 
						|
	 * @param string $message
 | 
						|
	 * @param bool   $stripCodes
 | 
						|
	 * @param bool   $eol
 | 
						|
	 */
 | 
						|
	public static function logError($message, $stripCodes = false, $eol = true) {
 | 
						|
		$message = '[ERROR] ' . $message;
 | 
						|
		self::log($message, $stripCodes, $eol);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Log and output the given message
 | 
						|
	 *
 | 
						|
	 * @param string $message
 | 
						|
	 * @param bool   $stripCodes
 | 
						|
	 * @param bool   $eol
 | 
						|
	 */
 | 
						|
	public static function log($message, $stripCodes = false, $eol = true) {
 | 
						|
		if ($stripCodes) {
 | 
						|
			$message = Formatter::stripCodes($message);
 | 
						|
		}
 | 
						|
		error_log($message);
 | 
						|
		self::output($message, $eol);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Echo the given message
 | 
						|
	 *
 | 
						|
	 * @param string $message
 | 
						|
	 * @param bool   $eol
 | 
						|
	 */
 | 
						|
	private static function output($message, $eol = true) {
 | 
						|
		if ($eol) {
 | 
						|
			$message = '[' . date('d-M-Y H:i:s e') . '] ' . $message . PHP_EOL;
 | 
						|
		}
 | 
						|
		echo $message;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Log and output the given Info message
 | 
						|
	 *
 | 
						|
	 * @param string $message
 | 
						|
	 * @param bool   $stripCodes
 | 
						|
	 * @param bool   $eol
 | 
						|
	 */
 | 
						|
	public static function logInfo($message, $stripCodes = false, $eol = true) {
 | 
						|
		$message = '[INFO] ' . $message;
 | 
						|
		self::log($message, $stripCodes, $eol);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Log and output the given Warning message
 | 
						|
	 *
 | 
						|
	 * @param string $message
 | 
						|
	 * @param bool   $stripCodes
 | 
						|
	 * @param bool   $eol
 | 
						|
	 */
 | 
						|
	public static function logWarning($message, $stripCodes = false, $eol = true) {
 | 
						|
		$message = '[WARNING] ' . $message;
 | 
						|
		self::log($message, $stripCodes, $eol);
 | 
						|
	}
 | 
						|
}
 |