CI 코드

제목 로그를 개발자 도구 콘솔창에서 보자
글쓴이 나이유미 작성시각 2014/08/11 02:53:33
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 24736   RSS


위처럼 자바스크립트 콘솔에서 php로그 메시지를 볼 수 있는 라이브러리 입니다.

아래는 라이브러리입니다. Nlog.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Nlog {
    public function __construct() {
		if (!defined("LOG"))    define("LOG",1);
		if (!defined("INFO"))   define("INFO",2);
		if (!defined("WARN"))   define("WARN",3);
		if (!defined("ERROR"))  define("ERROR",4);

		define("NL","\r\n");
		echo '<script type="text/javascript">'.NL;

		echo 'if (!window.console) console = {};';
		echo 'console.log = console.log || function(){};';
		echo 'console.warn = console.warn || function(){};';
		echo 'console.error = console.error || function(){};';
		echo 'console.info = console.info || function(){};';
		echo 'console.debug = console.debug || function(){};';
		echo '</script>';
    }

	public function put($name, $var = null, $type = LOG) {
		echo '<script type="text/javascript">'.NL;
		switch($type) {
			case LOG:
				echo 'console.log("'.$name.'");'.NL;
			break;
			case INFO:
				echo 'console.info("'.$name.'");'.NL;
			break;
			case WARN:
				echo 'console.warn("'.$name.'");'.NL;
			break;
			case ERROR:
				echo 'console.error("'.$name.'");'.NL;
			break;
		}

		if (!empty($var)) {
			if (is_object($var) || is_array($var)) {
				$object = json_encode($var);
				echo 'var object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = \''.str_replace("'","\'",$object).'\';'.NL;
				echo 'var val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = eval("(" + object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' + ")" );'.NL;
				switch($type) {
					case LOG:
						echo 'console.debug(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
					break;
					case INFO:
						echo 'console.info(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
					break;
					case WARN:
						echo 'console.warn(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
					break;
					case ERROR:
						echo 'console.error(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
					break;
				}
			} else {
				switch($type) {
					case LOG:
						echo 'console.debug("'.str_replace('"','\\"',$var).'");'.NL;
					break;
					case INFO:
						echo 'console.info("'.str_replace('"','\\"',$var).'");'.NL;
					break;
					case WARN:
						echo 'console.warn("'.str_replace('"','\\"',$var).'");'.NL;
					break;
					case ERROR:
						echo 'console.error("'.str_replace('"','\\"',$var).'");'.NL;
					break;
				}
			}
		}
		echo '</script>'.NL;
	}
}

/* End of file */


아래는 사용법입니다. 컨트롤러에서 사용시 입니다.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class TmpConsoleLogTest extends CI_Controller {

    public function __construct(){
        parent::__construct();

    }
    function index(){
        $this->nlog->put('test');

        $test = 'bar';
        $this->nlog->put('foo>>', $test);
        $this->nlog->put('foo>>', $test, LOG);
        $this->nlog->put('foo>>', $test, INFO);
        $this->nlog->put('foo>>', $test, WARN);
        $this->nlog->put('foo>>', $test, ERROR);

        $testArr = array(
            'sexy',
            'commando',
            "girl" => array(
                'sexy',
                'baby'
            )
        );
        $this->nlog->put('foo', $testArr);

    }
}

 
 다음글 Template 엔진 (3)
 이전글 한국형 게시판에 사용되는 페이지네이션을 구현한 라이브러... (4)

댓글

한대승(불의회상) / 2014/08/12 08:51:07 / 추천 0
디버그시 개발자 콘솔을 많이 사용하는데 아주 유용 할 것 같습니다.
감사 합니다.
letsgolee / 2014/08/12 09:22:49 / 추천 0
좋습니다.