<?php
/**
 * エラーロギングユーティリティ
 * $Id: ErrorLogger.inc,v 1.1 2015/10/08 11:18:56 wanggb Exp $
 * @package jp.aimslib2.util
 */


class ErrorLogger {
	
	const LOG_ERROR_OFF = 0; // オフ
	const LOG_ERROR = 1; // E_USER_ERROR相当。処理が中断するエラーの発生。
	const LOG_WARNING = 2; // E_USER_WARNING相当。処理は止まらないが、致命的なエラーの発生。クラスに対する許可していない処理等。
	const LOG_NOTICE = 3; // E_USER_NOTICE相当。初期化されていない変数、SQLのエラー等。
	const LOG_INFO = 10; // 処理の状況を出力する。仮運用時に表示させたい、デバッグよりは重要な情報。
	const LOG_DEBUG = 99; // LOG_DEBUG デバッグのための出力。

	/**
	 * ログを出力します。
	 */
	public static function doOutput($mixed, $level = 0, $title = null) {

		if (defined("ERROR_LOG_LEVEL") && (ERROR_LOG_LEVEL < $level || ERROR_LOG_LEVEL == self::LOG_ERROR_OFF)) {
			return;
		}


		if (!empty($title)) {
			$title = "[" . $title . "]";
		} else {
			$title = "";
		}

		if (is_scalar($mixed)) {

			// 普通はそのまま出力
			error_log($title . $mixed, 0);
		} else {

			ob_start();
			var_dump($mixed);
			$data = ob_get_clean();

			error_log($title . $data, 0);


		}


	}

	/**
	 * デバッグ用出力
	 * @param String $message
	 * @param String $title
	 */
	public static function debug($message, $title = null) {
		$op = new ErrorLogger();
		$op->doOutput($message, self::LOG_DEBUG, $title);
	}

	/**
	 * 情報用出力
	 * @param String $message
	 * @param String $title
	 */
	public static function info($message, $title = null) {
		$op = new ErrorLogger();
		$op->doOutput($message, self::LOG_INFO, $title);

	}

	/**
	 * 注意用出力
	 * @param String $message
	 * @param String $title
	 */
	public static function notice($message, $title = null) {
		$op = new ErrorLogger();
		$op->doOutput($message, self::LOG_NOTICE, $title);
	}

}

?>