如何记录我们的 自己的错误消息(例如:由于无效的用户日期输入而产生的错误) php 编程到 drupal错误日志.

有帮助吗?

解决方案

您可以使用 watchdog 功能 :

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

引用手册,参数为:

  • $type 该消息所属的类别。
  • $message 要存储在日志中的消息。
  • $variables 要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为 NULL。
  • $severity 消息的严重性,根据 RFC 3164
  • $link 与消息关联的链接。

错误级别可以在页面上找到 watchdog_severity_levels. 。对于错误,您很可能会使用 WATCHDOG_ERROR, ,或者甚至可能是更“关键”的东西,具体取决于错误的类型。

其他提示

的Drupal 8

// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);

请参阅更多的例子在如何登录在Drupal 8 消息

1)确实,看门狗是记录自己的PHP错误的标准方法。

2) 或者,如果您在调试 Drupal 页面时需要立即查看错误消息,您可能希望在相关页面上直接查看它们记录/打印 - 在 FireBug 控制台中。有时,当您可以看到与页面相关的即时日志时,这非常方便。这需要—— 德维尔 模块, 萤火虫 扩展至 FireFox 并可能 火力PHP.

您可以使用 dfb() 函数将日志消息直接写入通用 Firebug 控制台。

dfb($input, $label = NULL)

如果您想让 Drupal 相关的日志消息远离正常的 Firebug 控制台,您可以将消息写入 用于 Firebug 的 Drupal 使用 firep() 函数记录:

firep($item, $optional_title)

看门狗是去生产系统毫无疑问的方式,但在调试过程中我发现drupal_set_message功能非常有用。

它输出消息到“操作Successful'型消息通常显示在屏幕(以便确保您使网站实时之前删除它们)。

http://api.drupal.org/api/function/drupal_set_message/6

在的Drupal 7我们可以记录由以下方法信息:

Drupal的看门狗功能,我们可以在数据库中记录的消息,确保我们启用了数据库日志可选核心模块在/管理/建设/模块。

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

<强> $类型: 该消息所属的类别,例如:PHP,cron的..,我们可以通过类型来过滤消息

<强> $消息: 该消息存储日志,实施例中:“下面的模块从文件系统丢失:security_review”

<强> $变量: 变量数组的消息中替换上显示或NULL,如果消息已经被转变或不可能的平移。 使消息被翻译,不传递动态值传递变量的消息中应通过使用占位符字符串被添加。

示例: 看门狗( 'cg_volunteer', 'CG在form_alter%formly',阵列( '%formly'=> $形式[ '#标识']),WATCHDOG_NOTICE,$链接= NULL);

<强> $严重性 该消息的严重程度,日志可以按严重性滤波器按照RFC 3164可能的值有WATCHDOG_ERROR,WATCHDOG_WARNING等 欲了解更多例子参见 https://开头的API。 drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x

<强> $链路: 的链接关联与消息。

示例

//为日志通知

watchdog('my_module', $message, array());

//用于登录电子错误

watchdog('my_module', $message, array(), WATCHDOG_ERROR);

<强>在Drupal 8,我们使用下面的方法:

//对于日志的通知。

\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')->emergency($message);

//对于警告

\Drupal::logger('my_module')->warning($message);

//对于信息性消息。

\Drupal::logger('my_module')->info($message);

同样为了翻译我们不应该使用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(),
));

这两个watchdog为D7及\Drupal::logger为D8将写日志中watchdog表(数据库),并用庞大的数据记录上,你能想象的性能影响。

可以使用error_log PHP函数做(见 PHP手册)。

error_log("Your message", 3, "/path/to/your/log/file.log");
  

您需要有权限在日志文件中写入(/path/to/your/log/file.log

<一类= “标签后的” href = “/问题/标记/ drupal的” 标题= “节目问题标记 '的Drupal'” 的rel = “标签”> drupal的 <类= “标签后的” href = “/问题/标记/ PHP的” 标题= “节目问题标记的PHP'” 的rel = “标签”> PHP <类= “标签后的” href = “/问题/标记/记录” 标题= “显示问题标记 '登录'” 的rel = “标签”>登录

// Get logger factory.
$logger = \Drupal::service('logger.factory');

// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
    '@nodeType' => $nodeType,
    '%userName' => $userName,
]);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top