如何在drupal中记录错误消息
如何将自己的错误消息(例如:由于无效的用户日期输入而产生的错误)记录到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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以使用
watchdog
函数 :引用手册,参数为:
$type
该消息所属的类别。$message
要存储在日志中的消息。$variables
要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为 NULL。$severity
消息的严重性,根据 RFC 3164$link
与消息关联的链接。错误级别可以在
watchdog_severity_levels
。对于错误,您很可能会使用WATCHDOG_ERROR
,甚至可能使用更“关键”的内容,具体取决于错误的类型。You can use the
watchdog
function :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 useWATCHDOG_ERROR
, or maybe even something more "critical", depending on the kind of error.Drupal 8+
请参阅如何在 Drupal 8 中记录消息。
Drupal 8+
See more examples at How to Log Messages in Drupal 8.
1)确实,看门狗是记录自己的PHP错误的标准方法。
2) 或者,如果您在调试 Drupal 页面时需要立即查看错误消息,您可能希望在相关页面(FireBug 控制台)中查看它们的记录/打印。
有时,当您可以看到与页面相关的即时日志时,这非常方便。
这需要 - Devel 模块,Firebug FireFox 扩展,可能还有 Firephp。
您可以使用 dfb() 函数将日志消息直接写入通用 Firebug 控制台。
如果您想让与 Drupal 相关的日志消息远离正常的 Firebug 控制台,您可以将消息写入 Drupal for Firebug 使用 firep() 函数记录:
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.
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:
毫无疑问,看门狗是生产系统的最佳选择,但在调试过程中我发现
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
在drupal 7中,我们可以通过以下方法记录消息:
我们可以使用drupal看门狗功能在数据库中记录消息,确保我们在/admin/build/modules中启用了数据库日志记录的可选核心模块。
$类型:
该消息所属的类别,例如: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:
与消息关联的链接。
示例
// 对于日志通知
// 对于日志错误
在 drupal 8 中我们使用了以下方法:
// 对于日志通知。
// 用于记录错误。
// 对于警报,必须立即采取行动。
// 对于关键消息。
// 用于调试级别消息。
//紧急情况下,系统无法使用。
//用于警告
//用于信息性消息。
另外,对于翻译,我们不应该使用 t() 函数。
这将在运行时进行翻译。
示例:
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.
$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
// for Loging Error
In drupal 8 we used following method:
// For Logs a notice.
// For Logs an error.
// For Alert, action must be taken immediately.
// For Critical message.
// For Debug-level messages.
//For Emergency, system is unusable.
//For Warning
//For Informational messages.
Also for translate we should not use t() function.
this will be translated on run time.
Example :
D7 和 D7 的
看门狗
D8 的\Drupal::logger
会将日志写入watchdog
表(在您的数据库中),并且通过记录大量数据,您可以想象性能影响。您可以使用
error_log
php 函数来执行此操作(请参阅 PHP 手册)。drupal-8drupalphplog
Both
watchdog
for D7 &\Drupal::logger
for D8 will write log inwatchdog
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).drupal-8drupalphplog
来源
Source