디버깅 로그 인쇄 방법
PHP 코드를 디버깅하고 싶은데 로그나 파일을 스크리닝으로 출력하면 될 것 같습니다.
PHP 코드로 로그를 인쇄하려면 어떻게 해야 하나요?
늘 하던 대로print
/printf
콘솔이 아닌 HTML 출력으로 이동하는 것 같습니다.
PHP 코드를 실행하는 Apache 서버가 있습니다.
mod_php가 stderr을 Apache 로그에 매핑하는 것은 잘 알려져 있지 않습니다.그리고 그 흐름도 있기 때문에file_put_contents('php://stderr', print_r($foo, TRUE))
가치를 떨어뜨릴 것이다$foo
Apache 에러 로그에 기록합니다.
error_log(print_r($variable, TRUE));
도움이 될지도 모른다
error_log를 사용하여 서버에 오류 로그 파일(또는 필요에 따라 다른 옵션 파일)을 전송할 수 있습니다.
Linux 를 사용하고 있는 경우:
file_put_contents('your_log_file', 'your_content');
아니면
error_log ('your_content', 3, 'your_log_file');
그 후 콘솔로
tail -f your_log_file
파일에 입력된 마지막 행이 계속 표시됩니다.
당신은 생각을 바꿀 필요가 있어요.당신은 PHP를 쓰고 있는 것이지 쓰는 데 익숙한 것이 아닙니다.콘솔 환경에서는 PHP에서의 디버깅이 이루어지지 않습니다.
PHP에는 3가지 카테고리의 디버깅솔루션이 있습니다.
- 웹 페이지로 출력합니다(더 자세한 내용은 dBug 라이브러리 참조).
- 로그 파일에 쓰기
- xDebug를 사용한 세션 디버깅 중
PHP가 익숙한 다른 언어처럼 동작하도록 하는 대신 이러한 언어를 사용하는 것을 배우십시오.
콘솔에서 디버깅하고 있습니까?PHP 디버깅에는 다양한 옵션이 있습니다.빠른 디버깅과 더티 디버깅에 가장 일반적으로 사용되는 함수는 var_dump입니다.
참고로 var_dump는 훌륭하고 많은 사람들이 그것만으로 모든 것을 할 수 있지만, 그 외에 다른 툴이나 테크닉도 있습니다.
웹 페이지에서 디버깅할 때 도움이 되는 정보, 랩<pre> </pre>
dump 스테이트먼트 주위에 태그를 부착하여 어레이 및 객체의 올바른 형식을 제공합니다.
예:
<div> some html code ....
<a href="<?php $tpl->link;?>">some link to test</a>
</div>
dump $tpl like this:
<pre><?php var_dump($tpl); ?></pre>
마지막으로 오류 처리 디버깅이 오류를 표시하도록 설정되어 있는지 확인합니다.서버 설정에 액세스 할 수 없는 경우는, 스크립트의 상부에 이것을 추가할 필요가 있는 경우가 있습니다.
error_reporting(E_ALL);
ini_set('display_errors', '1');
행운을 빕니다.
다음과 같은 파일에 쓸 수도 있습니다.
$logFilePath = '../logs/debug.text';
ob_start();
// if you want to concatenate:
if (file_exists($logFilePath)) {
include($logFilePath);
}
// for timestamp
$currentTime = date(DATE_RSS);
// echo log statement(s) here
echo "\n\n$currentTime - [log statement here]";
$logFile = fopen($logFilePath, 'w');
fwrite($logFile, ob_get_contents());
fclose($logFile);
ob_end_flush();
php가 파일에 액세스하여 쓸 수 있도록 적절한 권한이 설정되어 있는지 확인합니다(775
).
Zend와 같은 프레임워크를 통합하지 않으려면 trigger_error 메서드를 사용하여 php 오류 로그에 기록할 수 있습니다.
방법은 trigger_error 입니다.
trigger_error("My error");
어레이나 오브젝트를 넣을 수 없기 때문에
var_dump
php curl 모듈을 사용하여 http://liveoutput.com/으로 전화를 걸 수 있습니다.이 기능은 php.ini에 특정 제한이 존재하여 사용을 제한하는 안전한 기업 환경에서 매우 효과적입니다.file_put_contents
.
이것은 PHP 디버깅과 로깅을 위한 훌륭한 도구입니다.PHP 디버거와 로거
3줄의 코드만으로 바로 사용할 수 있습니다.js 콘솔에 메시지를 전송하여 에이잭스 디버깅을 수행할 수 있으며 오류 핸들러를 대체할 수 있습니다.또한 var_dump() 및 print_r() 등의 변수에 대한 정보도 덤프하지만 읽기 쉬운 형식으로 덤프합니다.아주 좋은 도구입니다!
지금까지 많은 디버깅을 사용했지만 개발 시 디버깅을 해야 하고 localhost에서 개발하기 때문에 다른 사용자의 조언을 따라 브라우저의 JavaScript 디버깅콘솔에 글을 씁니다(http://www.codeforest.net/debugging-php-in-browsers-javascript-console) 참조).
즉, 브라우저에서 PHP가 생성하는 웹 페이지를 보고 F12 키를 눌러 디버깅 트레이스를 빠르게 표시하거나 숨길 수 있습니다.
디버거, CSS 레이아웃 등을 위한 개발자 툴을 계속 보고 있기 때문에, 거기서 PHP 로건을 보는 것이 타당합니다.
만약 누군가 우리에게 그 코드를 결정한다면, 나는 작은 변경을 가했다.끝나고
function debug($name, $var = null, $type = LOG) {
나는 덧붙였다.
$name = 'PHP: ' . $name;
이는 서버측 PHP가 JavaScript를 포함하는HTML을 생성하기 때문에 PHP와 JS의 출력을 구별하는 것이 편리하다고 생각하기 때문입니다.
(주의: 현재 PHP, JS, 데이터베이스 액세스 등 다양한 출력 유형을 켜고 끌 수 있도록 업데이트 중입니다.)
나는 cakephp를 사용하기 때문에 다음을 사용한다.
$this->log(YOUR_STRING_GOES_HERE, 'debug');
다음을 사용할 수 있습니다.
<?php
echo '<script>console.log("debug log")</script>';
?>
사용할 수 있습니다.
<?php
{
AddLog("anypage.php","reason",ERR_ERROR);
}
?>
또는 로그로 그 스테이트먼트를 인쇄하려면
AddLog("anypage.php","string: ".$string,ERR_DEBUG_LOW);
언급URL : https://stackoverflow.com/questions/6079492/how-to-print-a-debug-log
'programing' 카테고리의 다른 글
검출되지 않은 오류:불변 위반:요소 유형이 잘못되었습니다. 문자열(내장 구성 요소에 대한) 또는 클래스/함수가 필요하지만: 개체를 받았습니다. (0) | 2022.10.30 |
---|---|
phpMyAdmin 3.2.4를 사용하여 뷰를 편집하려면 어떻게 해야 합니까? (0) | 2022.10.30 |
여러 Python 버전과 PIP를 다루고 있습니까? (0) | 2022.10.30 |
그룹화된 결과의 각 그룹에 대해 상위 n개의 레코드를 가져옵니다. (0) | 2022.10.30 |
위의 디렉토리에 있는 Python 클래스를 Import하려면 어떻게 해야 합니까? (0) | 2022.10.30 |