加入收藏 | 设为首页 | 会员中心 | 我要投稿 三门峡站长网 (https://www.0398zz.com.cn/)- 云连接、设备管理、智能边缘云、云防火墙、数据加密!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Laravel 集成的 Monolog 库对日志进行配置和记录实例

发布时间:2022-07-04 09:23:46 所属栏目:PHP教程 来源:互联网
导读:对于大型系统而言,日志是不可或缺的模块,Laravel自然也对日志提供了完善的支持。目前Laravel集成了强大的Monolog库进行日志记录。下面我们就来大致看一下Laravel中如何对日志进行配置以及日志的简单使用。 1、日志处理器配置 首先我们来看日志处理器的配置
  对于大型系统而言,日志是不可或缺的模块,Laravel自然也对日志提供了完善的支持。目前Laravel集成了强大的Monolog库进行日志记录。下面我们就来大致看一下Laravel中如何对日志进行配置以及日志的简单使用。
 
  1、日志处理器配置
 
  首先我们来看日志处理器的配置。Laravel目前支持四种日志处理器:
 
  single —— 将日志记录到单个文件中。该日志处理器对应Monolog的StreamHandler。
 
  daily —— 以日期为单位将日志进行归档,每天创建一个新的日志文件记录日志。该日志处理器 对应Monolog的RotatingFileHandler。
 
  syslog —— 将日志记录到syslog中。该日志处理器 对应Monolog的SyslogHandler。
 
  errorlog —— 将日志记录到PHP的error_log中。该日志处理器 对应Monolog的ErrorLogHandler。
 
  项目实际日志处理器通过config/app.php中的log配置项决定,默认配置值为single。这里我们使用默认值,不做修改:
 
  'log' => 'single',
 
  当然如果这四种方式满足不了你的需求,还可以使用configureMonologUsing方法完全控制Monolog的日志处理器:
 
  $app->configureMonologUsing(function($monolog) {
      $monolog->pushHandler(...);
  });
  注:必须将上述这段代码置于bootstrap/app.php文件返回$app之前处才能生效。
 
  2、使用Log记录日志
 
  配置完成后,就可以在代码中使用Log门面来记录日志,Log门面背后实际上是IlluminateLogWriter,而在Writer的构造函数中注入了MonologLogger。生成的日志文件存放在storage/logs目录下。
 
  目前,Log门面支持八种日志级别(使用RFC 5424标准):
 
  Log::emergency($error);     //紧急状况,比如系统挂掉
  Log::alert($error);     //需要立即采取行动的问题,比如整站宕掉,数据库异常等,这种状况应该通过短信提醒  
  Log::critical($error);     //严重问题,比如:应用组件无效,意料之外的异常
  Log::error($error);     //运行时错误,不需要立即处理但需要被记录和监控
  Log::warning($error);    //警告但不是错误,比如使用了被废弃的API
  Log::notice($error);     //普通但值得注意的事件
  Log::info($error);     //感兴趣的事件,比如登录、退出
  Log::debug($error);     //详细的调试信息
  下面我们就来分别演示下这几种日志级别的日志记录,我们将在TestController的log方法中进行测试:
 
  public function log(){
      Log::emergency("系统挂掉了");
      Log::alert("数据库访问异常");
      Log::critical("系统出现未知错误");
      Log::error("指定变量不存在");
      Log::warning("该方法已经被废弃");
      Log::notice("用户在异地登录");
      Log::info("用户xxx登录成功");
      Log::debug("调试信息");
  }
  在浏览器中访问http://laravel.app:8000/test/log,对应在storage/logs/laravel.log记录的日志信息如下:
 
  [2015-11-09 14:24:05] local.EMERGENCY: 系统挂掉了
 
  [2015-11-09 14:24:05] local.ALERT: 数据库访问异常
 
  [2015-11-09 14:24:05] local.CRITICAL: 系统出现未知错误
 
  [2015-11-09 14:24:05] local.ERROR: 指定变量不存在
 
  [2015-11-09 14:24:05] local.WARNING: 该方法已经被废弃
 
  [2015-11-09 14:24:05] local.NOTICE: 用户在异地登录
 
  [2015-11-09 14:24:05] local.INFO: 用户xxx登录成功
 
  [2015-11-09 14:24:05] local.DEBUG: 调试信息
 
  可见对应的日志记录包含了日志记录时间、日志级别和日志消息等信息。当然我们也可以在记录日志时传递上下文信息:
 
  Log::info("用户xxx登录成功",['user_id'=>1]);
 
  对应的日志记录为:
 
  [2015-11-09 14:25:47] local.INFO: 用户xxx登录成功 {"user_id":1}
 
  如果要访问底层Monolog的实例可以使用如下方法:
 
  $monolog = Log::getMonolog();
 
  dd($monolog);
 
  我们可以在浏览器页面中查看当前Monolog对象实例的属性信息:
 
  Laravel Monolog 对象实例
 
  我们可以从中看出当前使用的日志处理器,日志记录的位置,日志记录的格式等信息。
 
 

(编辑:三门峡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读