如何在drupal中记录错误消息

发布于 2024-08-10 14:10:58 字数 114 浏览 5 评论 0原文

如何将自己的错误消息(例如:由于无效的用户日期输入而产生的错误)记录到drupal错误日志中,该错误消息是在php程序中生成的。

How to log our own error messages(for ex: error due to invalid user date entry) which is generated in php program to drupal error log.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

冷血 2024-08-17 14:10:58

您可以使用 watchdog 函数

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

引用手册,参数为:

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

错误级别可以在 watchdog_severity_levels。对于错误,您很可能会使用 WATCHDOG_ERROR,甚至可能使用更“关键”的内容,具体取决于错误的类型。

You can use the watchdog function :

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

Quoting the manual, the parameters are :

  • $type The category to which this message belongs.
  • $message The message to store in the log.
  • $variables Array of variables to replace in the message on display or NULL if message is already translated or not possible to translate.
  • $severity The severity of the message, as per RFC 3164
  • $link A link to associate with the message.

And the error levels can be found on the page of watchdog_severity_levels. For an error, you'll most probably use WATCHDOG_ERROR, or maybe even something more "critical", depending on the kind of error.

饭团 2024-08-17 14:10:58

Drupal 8+

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

请参阅如何在 Drupal 8 中记录消息。

Drupal 8+

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

See more examples at How to Log Messages in Drupal 8.

莫多说 2024-08-17 14:10:58

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

2) 或者,如果您在调试 Drupal 页面时需要立即查看错误消息,您可能希望在相关页面(FireBug 控制台)中查看它们的记录/打印。
有时,当您可以看到与页面相关的即时日志时,这非常方便。
这需要 - Devel 模块,Firebug FireFox 扩展,可能还有 Firephp

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

dfb($input, $label = NULL)

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

firep($item, $optional_title)

1) Indeed, watchdog is a standard way to record own PHP errors.

2) Alternatively, if you need to immediately see error messages while debugging your Drupal pages, you may want to see them logged/printed right at the related page - in FireBug console.
Sometimes is this very convenient when you can see page-related just-in-time logs.
This requires - Devel module, Firebug extension to FireFox and possibly Firephp.

You can use the dfb() function to write log messages directly to the general Firebug console.

dfb($input, $label = NULL)

If you want to keep your Drupal-related log messages out of the normal Firebug console, you can write messages to the Drupal for Firebug log with the firep() function:

firep($item, $optional_title)
天涯离梦残月幽梦 2024-08-17 14:10:58

毫无疑问,看门狗是生产系统的最佳选择,但在调试过程中我发现 drupal_set_message 函数很有用。

它将消息输出到通常显示“操作成功”类型消息的屏幕(因此请确保在站点上线之前将其删除)。

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

Watchdog is the way to go for a production system no doubt but during debugging I find the drupal_set_message function useful.

It outputs the message to the screen where the 'Operation Successful'-type messages are normally displayed (so make sure you remove them before making the site Live).

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

涙—继续流 2024-08-17 14:10:58

在drupal 7中,我们可以通过以下方法记录消息:

我们可以使用drupal看门狗功能在数据库中记录消息,确保我们在/admin/build/modules中启用了数据库日志记录的可选核心模块。

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

$类型:
该消息所属的类别,例如:PHP、cron..,我们可以按类型过滤消息。

$消息:
要存储在日志中的消息,例如:“文件系统中缺少以下模块:security_review”

$variables:
要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为 NULL。
要翻译消息,请不要传递动态值,应使用占位符字符串添加消息中的传递变量。

示例:
watchdog('cg_volunteer', 'cg in form_alter %formly', array('%formly' => $form['#id']), WATCHDOG_NOTICE, $link = NULL);

$严重性
消息、日志的严重性可以根据 RFC 3164 按严重性进行过滤。可能的值为 WATCHDOG_ERROR、WATCHDOG_WARNING 等。
有关更多示例,请参阅 https://api。 drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x

$link
与消息关联的链接。

示例

// 对于日志通知

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(),
));

In drupal 7 we can log message by following method:

drupal watchdog function we can use to log message in database , make sure we have enabled optional core module for Database Logging at /admin/build/modules.

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

$type:
The category to which this message belongs , Example: PHP,cron.., we can filter message by type.

$message :
The message to store in the log,Example: 'The following module is missing from the file system: security_review'

$variables :
Array of variables to replace in the message on display or NULL if message is already translated or not possible to translate.
to make message translated , do not pass dynamic value pass variables in the message should be added by using placeholder strings.

Example:
watchdog('cg_volunteer', 'cg in form_alter %formly', array('%formly' => $form['#id']), WATCHDOG_NOTICE, $link = NULL);

$severity
The severity of the message,logs can be filter by severity as per RFC 3164. Possible values are WATCHDOG_ERROR, WATCHDOG_WARNING, etc.
For more example see https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x

$link:
A link to associate with the message.

Example

// for logs notices

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

// for Loging Error

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

In drupal 8 we used following method:

// For Logs a notice.

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

// For Logs an error.

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

// For Alert, action must be taken immediately.

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

// For Critical message.

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

// For Debug-level messages.

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

//For Emergency, system is unusable.

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

//For Warning

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

//For Informational messages.

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

Also for translate we should not use t() function.

\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);

this will be translated on run time.

Example :

\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
陈年往事 2024-08-17 14:10:58

D7 和 D7 的看门狗 D8 的 \Drupal::logger 会将日志写入 watchdog 表(在您的数据库中),并且通过记录大量数据,您可以想象性能影响。

您可以使用 error_log php 函数来执行此操作(请参阅 PHP 手册)。

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

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

Both watchdog for D7 & \Drupal::logger for D8 will write log in watchdog table (in your database), and with HUGE data logged, you can imagine performance impact.

You can use error_log php function to do it (see PHP manual).

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

You need to have permission to write in your log file (/path/to/your/log/file.log)

拥抱我好吗 2024-08-17 14:10:58
// 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,
]);

来源

// 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,
]);

Source

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文