提问人:Scott H 提问时间:11/17/2023 最后编辑:Scott H 更新时间:11/17/2023 访问量:30
NewRelic PHP-agent Laravel newrelic.transaction_tracer.record_sql = “raw” 显示?而不是价值
NewRelic PHP-agent Laravel newrelic.transaction_tracer.record_sql = "raw" shows ? instead of value
问:
我已经在Laravel开发中将我的NewRelic PHP代理设置为具有newrelic.transaction_tracer.record_sql =“raw”,但是这些值以“?”而不是值的形式进入APM。NewRelic 文档说,价值应该来自 https://docs.newrelic.com/docs/apm/agents/php-agent/configuration/php-agent-configuration/#inivar-tt-sql。
还有其他人遇到过这个问题吗?如果是这样,你是如何解决的?
当我将其设置为“关闭”时,SQL停止按预期运行。正如预期的那样,将其设置为“混淆”也会显示“?”而不是值。但是,再次将其设置为“raw”时,SQL中仍然有“?”而不是值。
我们有一个 CodeIgniter PHP 设置,当将此配置设置为 “raw” 时,该值确实会通过。
newrelic.high_security 未设置,因此默认为 false。
我尝试将newrelic.framework显式设置为“laravel”,但没有修复它。
验证我们使用的是最新的 NewRelic 代理和 PHP 次要版本:
- PHP 版本 8.0.30 (cli) (内置: Sep 2 2023 08:05:13) ( NTS )
- New Relic PHP-agent 版本 10.14.0.3-1563e8045968
答:
1赞
saidtechnology
11/17/2023
#1
不幸的是,在Laravel或New Relic PHP代理中没有直接的方法可以更改此行为。使用实际值显示原始 SQL 查询可能会暴露敏感数据并带来安全风险。但是,如果您需要查看实际值以进行调试,则可以考虑将查询记录在Laravel应用程序中。Laravel提供了几种记录查询的方法。
但是您可以在AppServiceProvider
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
public function boot()
{
DB::listen(function ($query) {
Log::info(
$query->sql,
$query->bindings,
$query->time
);
});
}
?>
这就是我好运。
评论