Php 如何在drupal中记录错误消息
如何将php程序中生成的我们自己的错误消息记录到drupal错误日志中(例如:由于无效的用户日期输入而导致的错误),您可以使用: 引用本手册,参数如下:Php 如何在drupal中记录错误消息,php,drupal,error-logging,drupal-8,log,Php,Drupal,Error Logging,Drupal 8,Log,如何将php程序中生成的我们自己的错误消息记录到drupal错误日志中(例如:由于无效的用户日期输入而导致的错误),您可以使用: 引用本手册,参数如下: $type此邮件所属的类别 $message要存储在日志中的消息 $variables要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL $severity根据RFC 3164,消息的严重性 $link与消息关联的链接 错误级别可在的页上找到。对于错误,您很可能会使用WATCHDOG\u error,甚至可能使用更“关键
此邮件所属的类别$type
要存储在日志中的消息$message
要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL$variables
根据RFC 3164,消息的严重性$severity
与消息关联的链接$link
WATCHDOG\u error
,甚至可能使用更“关键”的方法,具体取决于错误的类型。1)事实上,WATCHDOG是记录自己的PHP错误的标准方法
2) 或者,如果您需要在调试Drupal页面时立即看到错误消息,您可能希望在FireBug控制台中的相关页面上看到它们被记录/打印。
有时,当您可以看到与页面相关的即时日志时,这是非常方便的。
这需要-模块、FireFox的扩展,可能还需要
您可以使用dfb()函数将日志消息直接写入通用Firebug控制台
dfb($input, $label = NULL)
如果要将Drupal相关日志消息保留在正常Firebug控制台之外,可以使用firep()函数将消息写入日志:
firep($item, $optional_title)
Watchdog无疑是生产系统的一种方式,但在调试期间,我发现
drupal\u set\u message
函数很有用
它将消息输出到屏幕,屏幕上通常会显示“操作成功”类型的消息(因此,请确保在激活站点之前将其删除)
Drupal 8
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);
请参阅更多示例。在drupal 7中,我们可以通过以下方法记录消息: drupal的看门狗功能,我们可以使用它来记录数据库中的消息,确保我们已经在/admin/build/modules中为数据库记录启用了可选的核心模块
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
$type:
此消息所属的类别,例如:PHP、cron..,我们可以按类型筛选消息
$message:
要存储在日志中的消息,例如:“文件系统中缺少以下模块:security_review”
$variables:
要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL。
若要转换消息,请不要传递动态值。应使用占位符字符串添加消息中的传递变量
示例:
watchdog('cg#u志愿者','cg in form_alter%formly',数组('%formly'=>$form[''id']),watchdog#u通知,$link=NULL)
$severity
消息、日志的严重性可根据RFC 3164的严重性进行过滤。可能的值包括看门狗错误、看门狗警告等。
有关更多示例,请参见
$link:
与消息关联的链接
示例
//日志通知
watchdog('my_module', $message, array());
//对于登录错误
watchdog('my_module', $message, array(), WATCHDOG_ERROR);
在drupal 8中,我们使用了以下方法:
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
//如需通知
\Drupal::logger('my_module')->notice($message);
//对于日志,将显示一个错误
\Drupal::logger('my_module')->error($message);
//对于警报,必须立即采取行动
\Drupal::logger('my_module')->alert($message);
//对于关键信息
\Drupal::logger('my_module')->critical($message);
//用于调试级消息
\Drupal::logger('my_module')->debug($message);
\Drupal::logger('my_module')->info($message);
//紧急情况下,系统不可用
\Drupal::logger('my_module')->emergency($message);
//警告
\Drupal::logger('my_module')->warning($message);
//获取信息性消息
\Drupal::logger('my_module')->debug($message);
\Drupal::logger('my_module')->info($message);
同样对于translate,我们不应该使用t()函数
\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);
这将在运行时转换
示例:
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
D7和D8的
watchdog
和\Drupal::logger
都将在watchdog
表(在数据库中)中写入日志,并且记录了大量数据,您可以想象性能影响
您可以使用error\u log
php函数执行此操作(请参阅)
您需要具有写入日志文件的权限(/path/to/your/log/file.log
)
刚刚安装了Drupal for Firebug扩展-非常好。
$type
通常是您正在开发的模块的名称。我正在尝试记录整个“$form”,例如,您可以使用$message='My form:'将其记录为老式。打印($form,TRUE)。”代码>milkovsky的评论中缺少“$message=”我的表单:”。打印($form,TRUE)。“”代码>如何添加链接?谢谢,我正在寻找如何使用参数添加链接。