起因
因?yàn)閘aravel項(xiàng)目默認(rèn)的日志格式為single
螟蒸,顯然這對于查看而言是非常不舒服了茅坛。不過laravel日志了也同樣提供了另外幾種模式观挎。
- single —— 將日志記錄到單個文件中挪凑。該日志處理器對應(yīng)Monolog的StreamHandler
- daily —— 以日期為單位將日志進(jìn)行歸檔荠瘪,每天創(chuàng)建一個新的日志文件記錄日志夯巷。該日志處理器 對應(yīng)Monolog的RotatingFileHandler
- syslog —— 將日志記錄到syslog中。該日志處理器 對應(yīng)Monolog的SyslogHandler
- errorlog —— 將日志記錄到PHP的error_log中哀墓。該日志處理器 對應(yīng)Monolog的ErrorLogHandler
于是筆者就更改日志格式趁餐,但神奇的事情出現(xiàn)了。當(dāng)代碼錯誤時(shí)篮绰,竟然直接拋出500的Nginx錯誤澎怒,而無法渲染Exception錯誤頁面。這就讓尷尬了阶牍。于是開始尋找是不是哪里出錯了喷面。
查詢服務(wù)器日志
因?yàn)橹苯臃?wù)器報(bào)錯,那么就去查詢服務(wù)器錯誤日志走孽;但查詢無果惧辈,nginx竟然沒有錯誤日志。
于是開始翻查php錯誤日志磕瓷,果不其然盒齿,還真報(bào)錯了。內(nèi)容如下:
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "NOTICE: PHP message: PHP Fatal error: Uncaught ErrorException: Undefined variable: logger in /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:69"
nginx_1 | Stack trace:
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "Stack trace:"
nginx_1 | #0 /var/www/student/vendor/sentry/sentry/lib/Raven/Breadcrumbs/ErrorHandler.php(36): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#0 /var/www/student/vendor/sentry/sentry/lib/Raven/Breadcrumbs/ErrorHandler.php(36): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)"
nginx_1 | #1 /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(69): Raven_Breadcrumbs_ErrorHandler->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#1 /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(69): Raven_Breadcrumbs_ErrorHandler->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#2 /var/www/student/app/Exceptions/Handler.php(61): Illuminate\Foundation\Exceptions\Handler->report(Object(InvalidArgumentException))"
nginx_1 | #2 /var/www/student/app/Exceptions/Handler.php(61): Illuminate\Foundation\Exceptions\Handler->report(Object(InvalidArgumentException))
php-fpm_1 | 172.21.0.6 - 11/May/2017:23:06:19 +0000 "GET /index.php" 500
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#3 /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(80): App\Exceptions\Handler->report(Object(ErrorException))"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#4 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleException(Object(ErrorException))"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#5..."
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "NOTICE: PHP message: PHP Fatal error: Uncaught ErrorException: Undefined variable: logger in /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:69"
nginx_1 | #3 /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(80): App\Exceptions\Handler->report(Object(Symfony\Component\Debug\Exception\FatalErrorException))
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "Stack trace:"
nginx_1 | #4 /var/www/student/vendor
nginx_1 | 172.21.0.1 - - [11/May/2017:23:04:55 +0000] "GET /class/43f5a10c66e34f258633cb8a1332fe16/teacher HTTP/1.1" 200 2724 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#0 /var/www/student/vendor/sentry/sentry/lib/Raven/Breadcrumbs/ErrorHandler.php(36): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#1 /var/www/student/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(69): Raven_Breadcrumbs_ErrorHandler->handleError(8, 'Undefined varia...', '/var/www/studen...', 69, Array)"
nginx_1 | 172.21.0.1 - - [11/May/2017:23:04:55 +0000] "GET /favicon.ico HTTP/1.1" 200 0 "http://student.itxdl.cn/class/43f5a10c66e34f258633cb8a1332fe16/teacher" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
php-fpm_1 | [11-May-2017 23:06:21] WARNING: [pool www] child 7 said into stderr: "#2 /var/www/student/app/Exceptions/Handler.php(61): Illuminate\Foundation\Exceptions\Handler->report(Object(InvalidArgumentException))"
nginx_1 | 172.21.0.1 - - [11/May/2017:23:05:10 +0000] "GET /class/43f5a10c66e34f258633cb8a1332fe16/teacher HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
定位錯誤
- 發(fā)現(xiàn)不存在logger變量困食,這一定時(shí)改了哪個地方边翁。于是開始回退代碼版本,這時(shí)發(fā)現(xiàn)依然無法解決硕盹。
- 新建項(xiàng)目符匾,看是否為環(huán)境問題。發(fā)現(xiàn)新項(xiàng)目沒有問題瘩例,這時(shí)環(huán)境沒問題啊胶。
- 于是發(fā)現(xiàn).env文件配錯啦甸各。
錯誤代碼
# .env
...
APP_DEBUG=true
APP_LOG_LEVEL=daily
APP_URL=
...
# app.php
'log' => env('APP_LOG', 'single'),
'log_level' => env('APP_LOG_LEVEL', 'debug'),
LOG_LEVEL誤以為Log日志文件模式,其實(shí)為報(bào)錯級別焰坪。
解決
#.env
APP_LOG_LEVEL=debug
APP_LOG=daily