如何记录自己的错误消息(例如:由于无效的用户日期输入而导致的错误),该错误在 php 程序中生成并写入drupal错误日志。
igsr9ssn1#
您可以使用watchdog function:
watchdog
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
引用手册,参数为:
$type
$message
$variables
$severity
$link
错误级别可以在watchdog_severity_levels页面上找到,对于错误,您很可能使用WATCHDOG_ERROR,甚至可能使用更“关键”的方法,这取决于错误的类型。
watchdog_severity_levels
WATCHDOG_ERROR
zte4gxcn2#
Drupal 8+
// Logs a notice \Drupal::logger('my_module')->notice($message); // Logs an error \Drupal::logger('my_module')->error($message);
更多示例请参见How to Log Messages in Drupal 8。
uwopmtnx3#
1)事实上,看门狗是一个标准的方式来记录自己的PHP错误.2)或者,如果您需要在调试Drupal页面时立即看到错误消息,您可能希望在FireBug控制台的相关页面上看到它们的记录/打印。有时候,当您可以看到与页面相关的即时日志时,这是非常方便的。这需要-Devel模块,FireFox的Firebug扩展,可能还需要Firephp。您可以使用dfb()函数将日志消息直接写入常规Firebug控制台。
dfb($input, $label = NULL)
如果您不想让与Drupal相关的日志消息出现在普通的Firebug控制台中,可以使用firep()函数将消息写入Drupal for Firebug日志:
firep($item, $optional_title)
ss2ws0br4#
毫无疑问,看门狗是生产系统的首选,但在调试过程中,我发现drupal_set_message函数很有用。它将消息输出到通常显示“操作成功”类型消息的屏幕(因此,请确保在激活站点之前将其删除)。http://api.drupal.org/api/function/drupal_set_message/6
drupal_set_message
nfg76nw05#
在drupal 7中,我们可以通过以下方法记录消息:drupal看门狗函数,我们可以使用它来记录数据库中的消息,请确保我们已经在/admin/build/modules中启用了数据库日志记录的可选核心模块。
**$type:**此邮件所属的类别,示例:PHP,cron..,我们可以按类型过滤消息。**$message:**要存储在日志中的消息,示例:'文件系统中缺少以下模块:安全_审查'**$variables:**要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL。要翻译消息,请不要传递动态值应使用占位符字符串在消息中添加传递变量。**示例:**监视器('cg_volunteer','cg in form_alter % formly',数组(' % formly' =〉$form ['#id']),监视器通知,$链接= NULL);$severity消息的严重性,日志可以根据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);
//对于Alert,必须立即采取操作。
\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);
同样对于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(), ));
ev7lccsx6#
D7的watchdog和D8的\Drupal::logger都将在watchdog表(在您的数据库中)中写入日志,并且记录了巨大的数据,您可以想象性能影响。你可以使用error_log php函数来实现(参见PHP manual)。
\Drupal::logger
error_log
error_log("Your message", 3, "/path/to/your/log/file.log");
您需要具有写入日志文件(/path/to/your/log/file.log)的权限drupal-8drupalphplog
/path/to/your/log/file.log
dsekswqp7#
// 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
7条答案
按热度按时间igsr9ssn1#
您可以使用
watchdog
function:引用手册,参数为:
$type
此邮件所属的类别。$message
要存储在日志中的消息。$variables
要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL。$severity
消息的严重性,根据RFC 3164$link
与消息关联的链接。错误级别可以在
watchdog_severity_levels
页面上找到,对于错误,您很可能使用WATCHDOG_ERROR
,甚至可能使用更“关键”的方法,这取决于错误的类型。zte4gxcn2#
Drupal 8+
更多示例请参见How to Log Messages in Drupal 8。
uwopmtnx3#
1)事实上,看门狗是一个标准的方式来记录自己的PHP错误.
2)或者,如果您需要在调试Drupal页面时立即看到错误消息,您可能希望在FireBug控制台的相关页面上看到它们的记录/打印。有时候,当您可以看到与页面相关的即时日志时,这是非常方便的。这需要-Devel模块,FireFox的Firebug扩展,可能还需要Firephp。
您可以使用dfb()函数将日志消息直接写入常规Firebug控制台。
如果您不想让与Drupal相关的日志消息出现在普通的Firebug控制台中,可以使用firep()函数将消息写入Drupal for Firebug日志:
ss2ws0br4#
毫无疑问,看门狗是生产系统的首选,但在调试过程中,我发现
drupal_set_message
函数很有用。它将消息输出到通常显示“操作成功”类型消息的屏幕(因此,请确保在激活站点之前将其删除)。
http://api.drupal.org/api/function/drupal_set_message/6
nfg76nw05#
在drupal 7中,我们可以通过以下方法记录消息:
drupal看门狗函数,我们可以使用它来记录数据库中的消息,请确保我们已经在/admin/build/modules中启用了数据库日志记录的可选核心模块。
**$type:**此邮件所属的类别,示例:PHP,cron..,我们可以按类型过滤消息。
**$message:**要存储在日志中的消息,示例:'文件系统中缺少以下模块:安全_审查'
**$variables:**要在显示的消息中替换的变量数组,如果消息已翻译或无法翻译,则为NULL。要翻译消息,请不要传递动态值应使用占位符字符串在消息中添加传递变量。
**示例:**监视器('cg_volunteer','cg in form_alter % formly',数组(' % formly' =〉$form ['#id']),监视器通知,$链接= NULL);
$severity消息的严重性,日志可以根据RFC 3164按严重性筛选。可能的值为WATCHDOG_ERROR、WATCHDOG_WARNING等。有关更多示例,请参见https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x
$link:与消息关联的链接。
示例
//用于日志通知
//表示记录错误
在drupal 8中,我们使用了以下方法:
//用于记录通知。
//记录错误。
//对于Alert,必须立即采取操作。
//对于关键消息。
//用于调试级消息。
//对于紧急情况,系统不可用。
//用于警告
//用于信息性消息。
同样对于translate,我们不应该使用t()函数。
这将在运行时被转换。
示例:
ev7lccsx6#
D7的
watchdog
和D8的\Drupal::logger
都将在watchdog
表(在您的数据库中)中写入日志,并且记录了巨大的数据,您可以想象性能影响。你可以使用
error_log
php函数来实现(参见PHP manual)。您需要具有写入日志文件(
/path/to/your/log/file.log
)的权限drupal-8drupalphplog
dsekswqp7#
Source