thinkphp Log用法

use think\facade\Log;

//数组友好格式
Log::debug('<pre>' . print_r($data, true) . '</pre>');

//json数组
Log::debug(json_encode($data));

在这里插入图片描述
日志记录和跟踪调试。由于日志记录了所有的运行错误,因此养成经常查看日志文件的习惯,可以避免和及早发现很多的错误隐患。日志还有其他作用,用于输出一些不方便显示的调试的信息。

可以给多应用,或者前后端,分别配置日志,如上图

//指定文件
Log::init(['type' => 'File', 'path' => APP_PATH . 'wxpay_logs/']);
Log::write('wx支付日志');
<?php

这个是在api/config.php中配置的
//配置文件,
return [
    'exception_handle'        => '\\app\\api\\library\\ExceptionHandle',
    'default_return_type'    => 'json',
    'log'                    => [
        // 日志记录方式,内置 file socket 支持扩展,test--关闭记录
        'type'  => 'File',
        // 日志保存目录
        这是我自定义日志保存的路径为:dahelog
        'path'  => LOG_PATH.'dahelog/',
        // 日志记录级别
        'level' => [],
        // 最大文件数,超过系统会进行清理
        'max_files'    => 30,
        //开启后,error和debug日志单独记录,独立日志
        'apart_level'   =>  ['error','debug'],
    ],
];
use think\Log;

public function index()
    {
        记录日志
        Log::debug('日志信息');
//      Log::record('日志信息','notice');
//     	Log::record('日志信息','debug');
//     	Log::error('日志信息');
// 		Log::info('日志信息');

        助手函数
        //trace('错误信息','error');
        //trace('日志信息','info');

		清空日志
		//Log::clear();
    }

生成内容

log 常规日志,用于记录日志
error 错误,一般会导致程序的终止
notice 警告,程序可以运行但是还不够完美的错误
info 信息,程序输出信息
debug 调试,用于调试信息
sql SQL语句,用于SQL记录,只在数据库的调试模式开启时有效

这里看我上面的congfig.php。
‘level’ => [],代表所有类型的信息都写入日志
‘apart_level’ => [‘error’,‘debug’], 这里是给生成两个类型的文件,因为我需要debug查看调试信息

关闭日志记录
系统并未提供关闭日志的方法,但有两种方式可以关闭日志的写入,第一种方式是设置日志类型为test,即可不写入任何日志。

'log'   => [
    // 可以临时关闭日志写入
    'type'  => 'test',
],

还有很多用法,我只用到这么多,如果还有其他需求,请点击这里查看文档

<think>嗯,用户想了解ThinkPHP5中的报错处理方法及常见错误解决方案。首先,我需要回忆一下常见的ThinkPHP5错误类型,并结合之前提供的引用内容来组织答案。 首先,引用[1]提到了调用未定义方法appends的错误,这可能是在模型中使用append方法时出现的问题,需要检查方法是否存在或者是否拼写错误。接着,引用[2]提到控制器不存在的错误,这可能与控制器的命名空间或文件名不符合规范有关,需要检查命名空间和类名是否正确。引用[3]中的配置路径错误也是一个常见问题,特别是在Laravel的Illuminate Config中,但同样适用于ThinkPHP的配置管理,需要确认配置文件的位置和加载方式是否正确。引用[4]讨论了CORS跨域问题,在ThinkPHP5中处理跨域可能需要中间件或者在入口文件设置header头。 接下来,我应该将这些错误分门别类,比如控制器相关、模型相关、路由问题、配置错误、跨域问题等。每个类别下给出具体错误现象、原因分析和解决方法。例如,控制器不存在错误可能是因为命名空间不正确,或者控制器类没有正确继承think\Controller,解决方法包括检查命名空间、类名以及路由定义。 然后,还需要考虑其他常见错误,比如路由未定义、数据库连接失败、模板文件不存在等。这些都需要逐一列出,并给出对应的解决步骤。例如,路由未定义错误需要检查路由配置文件是否正确,或者是否使用了正确的路由注解。 此外,用户可能需要了解如何开启调试模式、查看日志文件等通用错误排查方法,这部分可以作为通用处理步骤放在前面。同时,提供一些示例代码或配置片段会更有帮助,比如如何设置数据库连接参数,或者在中间件中处理跨域请求。 最后,生成相关问题部分需要考虑用户可能进一步询问的内容,比如性能优化、高级调试技巧、第三方库集成等,这些问题可以帮助用户深入解决问题。</think>### ThinkPHP5 报错处理方法及常见错误解决方案 #### 一、通用错误处理步骤 1. **开启调试模式** 在开发阶段,将配置文件`config/app.php`中的`app_debug`设为`true`,可显示详细错误信息。生产环境需关闭以避免敏感信息泄露。 ```php 'app_debug' => true, ``` 2. **查看日志文件** 错误日志默认保存在`runtime/log`目录下,可通过日志定位具体错误位置和堆栈信息[^3]。 --- #### 二、常见错误类型及解决方案 ##### 1. **控制器不存在错误** - **现象**:`控制器不存在: app\controller\XXX` - **原因分析** - 控制器文件未遵循命名规范(如`UserController.php`对应类名`User`) - 未继承基类`think\Controller` - 路由定义与控制器路径不匹配[^2] - **解决方案** ```php // 正确控制器定义示例 namespace app\controller; use think\Controller; class User extends Controller { public function index(){} } ``` ##### 2. **调用未定义方法错误** - **现象**:`致命错误:调用一个未定义的方法appends` - **原因分析** - 模型(Model)中误用`append`方法但未定义对应属性 - 方法名拼写错误(如`appends`应为`append`)[^1] - **解决方案** ```php // 正确使用append方法 class User extends Model { protected $append = ['status_text']; // 注意是$append属性 } ``` ##### 3. **跨域请求错误(CORS)** - **现象**:前端请求提示`No 'Access-Control-Allow-Origin' header` - **解决方案** - 方法1:在控制器入口添加Header ```php header("Access-Control-Allow-Origin: *"); ``` - 方法2:使用中间件统一处理跨域[^4] ##### 4. **数据库连接失败** - **现象**:`SQLSTATE[HY000] [1045] Access denied` - **检查要点** - `config/database.php`中的`hostname`、`username`、`password` - 数据库服务是否启动 - 防火墙是否开放端口(默认3306) ##### 5. **路由未定义错误** - **现象**:`Route Not Found` - **解决方案** - 检查`route/route.php`是否定义对应路由 - 使用注解路由时需加载注解扩展 ```php // 路由文件启用注解 use think\facade\Route; Route::get('user/:id', 'app\controller\User@read'); ``` --- #### 三、高级调试技巧 1. **使用`dump()`函数** 在代码中插入`dump($variable)`输出变量值,观察数据流向。 2. **TP5内置异常捕获** ```php try { // 业务代码 } catch (\Exception $e) { echo $e->getMessage(); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值