如何在 Laravel 中向所有日志记录添加数据?

2024-02-18

我想向 Laravel 应用程序中的所有日志记录添加一些数据。

我认为了解当前用户的用户名和/或客户端 IP 地址会很有帮助。

目前我正在通过执行以下操作手动添加它:

Log::info('Pre-paid activation.', array('username' => Auth::user()->username));

但我想知道如何添加侦听器或进行一些操作all日志记录有用户名(如果可用)。


由于 Laravel 开箱即用Monolog https://github.com/Seldaek/monolog,这非常简单。通过编辑即可轻松实现app/start/global.php并在以下开头的行后添加以下内容:Log::useFiles:

Log::useFiles(storage_path().'/logs/laravel.log');
$monolog = Log::getMonolog();
$monolog->pushProcessor(function ($record) {
    $record['extra']['user'] = Auth::user() ? Auth::user()->username : 'anonymous';
    $record['extra']['ip'] = Request::getClientIp();
    return $record;
});

基本上,我们使用底层 Monolog 实例来注册一个处理器,该处理器将拦截要写入的任何日志记录。结果将类似于以下内容:

[2014-04-12 23:07:35] local.INFO:预付费激活。 [] {"用户":"匿名","ip":"::1"}

有关 Monolog 处理器的更多信息:https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#using-processors https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#using-processors


Extra:硬编码的extra就是告诉Monolog添加数据作为额外的信息(可以说是多余的)。在实践中,这是为了避免覆盖原始日志调用中添加的任何上下文数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Laravel 中向所有日志记录添加数据? 的相关文章

随机推荐

  • 在 Objective C 中将公历日期转换为儒略日计数

    我需要 Objective C 方法将公历日期转换为儒略日 与 PHP 方法 GregorianToJD 相同 精度 合并一天中的时间儒略日期转换 这些儒略日期转换方法产生的结果与美国海军天文台 https aa usno navy mil
  • 什么是谓词?

    作为一名业余编码员 我缺乏一些基础知识 在过去的几天里 我读了一些东西 谓词 这个词不断出现 我非常感谢有关该主题的解释 谓词的定义 可以在网上找到各种来源 例如 is 计算结果为 TRUE 或 FALSE 的逻辑表达式 通常用于指示代码中
  • 将表中的行从 utf8_turkish_ci 更新为 utf8_general_ci 有何影响?

    我无法加入某些表 因为有些表 行是 utf8 general ci 有些是 utf8 turkish ci 因此我不得不复制土耳其语 将其转换为通用语 最后使用它 但我想知道 如果我将原始表从土耳其语转换为通用表 我的应用程序会发生什么情况
  • Spark 数据帧将嵌套 JSON 转换为单独的列

    我有一个 JSON 流 其结构如下 可转换为数据帧 a 3936 b 123 c 34 attributes d 146 e 12 f 23 数据框显示函数结果如下输出 sqlContext read json jsonRDD show a
  • 在 mongodb 上每个集合使用多个模式

    我想在 mongodb 中的每个集合使用多个模式 如何使用它 当我尝试运行它时 它给了我这个错误 Error OverwriteModelError 无法覆盖allUsers模型一旦编译 OverwriteModelError 无法覆盖ch
  • 选择只有一个唯一值的 pandas 数据框列

    如何有效地选择只有 1 个唯一值的 pandas dataframe 列 我知道 DataFrame 和 Series nunique 我认为需要DataFrame nunique http pandas pydata org pandas
  • 在 Netbeans 7.1 中编译

    我无法在 Widows 7 中的 netbeans 7 1 中编译项目 错误是 mkdir exe 停止工作 我在 MinGW gt Msys gt 1 0 gt bin 中找到 mkdir exe 并运行 但没有解决这个问题 当我运行项目
  • 使用 ImageMagick (或类似的)覆盖图像的文件名

    我知道 ImageMagick 的annotate命令可以在图像上叠加一些文本 但是它可以使用图像的文件名作为该文本吗 我本来是这么认为的 但似乎找不到直接的文档来证实这一点 毫无疑问 某些参数组合可以管理此问题 或者是否有更好的方法在脚本
  • 我如何使用 jekyll & Liquid 更有效地创建这个画廊?

    我的画廊是基于我的 twitter bootstrap css 文件 我最终使用了带有内联 HTML Markdown 的 Kramdown 因为我无法让它按照我希望的方式在 Liquid 中工作 Kramdown 解析的 markdown
  • 如何获取URL的路径?

    我有一个网址 如何检索其路径部分 例如 给定 http www costo com test1 test2 如何得到 test1 test2 你想要这样的东西 String path new URL http www costo com t
  • 将JSON数据放入html表单输入隐藏?

    我正在构建一个使用大量数据的丰富的 Web 应用程序 当我构建它时 我发现我一遍又一遍地重复自己 这就是问题 我需要将隐藏的应用程序逻辑放入 HTML 元素中以表示客户端正在查看的数据 这是我前段时间发现的一个解决方案 a href bla
  • 如何求和两个对象的属性?

    我有多个 JavaScript 对象 a 12 b 8 c 17 and a 2 b 4 c 1 我需要通过键对这两个对象求和 Result a 14 b 12 c 18 你有 JavaScript 的解决方案吗 我用Object keys
  • 树遍历递归

    我是编程新手 我正在研究我的树项目 我的树看起来像这样树结构 https i stack imgur com Ld0ke png 我已经编写了遍历完整树的代码 目前我的遍历将像这样打印完整的树 A B E F C D G H I J K d
  • “realloc():下一个大小无效”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 或者 重复
  • Android zip 文件身份验证

    如果我想创建需要压缩视频并且用户必须有密码身份验证才能打开文件的应用程序 是否可以 如果可能的话 你们能给我一些示例代码吗 谢谢 问候 尝试这样的事情 OutputStream out new ZipOutputStream new Cip
  • IE7 不尊重显示:阻止

    我正在尝试使用以下 HTML 标记进行简单的垂直导航 ul li a a li li a a li li a a li ul 尽管有display block 在两个 li and a 元素 IE7 似乎不尊重包含 div 的完整宽度 对这
  • 如何使用 cocoon 在 Rails 中克隆子对象?

    我有一个父对象 其中有许多非常相似的子对象 我有一个带有表格的表单 可以使用 cocoon 来编辑它们 有了它 和这个答案 https stackoverflow com questions 18734783 nested form coc
  • JqG​​rid 选择可能或可能不可见的特定行

    我有一个 jqGrid 并且有几页项目 我有一行的 ID 该行可能位于第一页 也可能隐藏在其他页面的某个位置 给定行的 ID 如何以编程方式选择这样的行 我使用按钮的点击事件如下 on click function var myId thi
  • 虚拟继承[重复]

    这个问题在这里已经有答案了 虚拟 继承是什么意思 我看到了下面的代码 没明白关键字的意思virtual在以下情况下 class A class B public virtual A 虚拟继承用于解决 DDD 问题 Dreadful Diam
  • 如何在 Laravel 中向所有日志记录添加数据?

    我想向 Laravel 应用程序中的所有日志记录添加一些数据 我认为了解当前用户的用户名和 或客户端 IP 地址会很有帮助 目前我正在通过执行以下操作手动添加它 Log info Pre paid activation array user