watchdog

5 bootstrap.inc watchdog($type, $message, $severity = WATCHDOG_NOTICE, $link = NULL)
6 bootstrap.inc watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
7 bootstrap.inc watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
8 bootstrap.inc watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

Logs a system message.

Parameters

$type: The category to which this message belongs. Can be any string, but the general practice is to use the name of the module calling watchdog().

$message: The message to store in the log. Keep $message translatable by not concatenating dynamic values into it! Variables in the message should be added by using placeholder strings alongside the variables argument to declare the value of the placeholders. See t() for documentation on how $message and $variables interact.

$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; one of the following values as defined in RFC 3164:

$link: A link to associate with the message.

See also

watchdog_severity_levels()

hook_watchdog()

118 calls to watchdog()

13 string references to 'watchdog'

File

core/includes/bootstrap.inc, line 1611
Functions that need to be loaded on every Drupal request.

Code

function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) {
  global $user, $base_root;

  static $in_error_state = FALSE;

  // It is possible that the error handling will itself trigger an error. In that case, we could
  // end up in an infinite loop. To avoid that, we implement a simple static semaphore.
  if (!$in_error_state && function_exists('module_implements')) {
    $in_error_state = TRUE;

    // The user object may not exist in all conditions, so 0 is substituted if needed.
    $user_uid = isset($user->uid) ? $user->uid : 0;

    // Prepare the fields to be logged
    $log_entry = array(
      'type' => $type, 
      'message' => $message, 
      'variables' => $variables, 
      'severity' => $severity, 
      'link' => $link, 
      'user' => $user, 
      'uid' => $user_uid, 
      'request_uri' => $base_root . request_uri(), 
      'referer' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', 
      'ip' => ip_address(), 
      'timestamp' => REQUEST_TIME,
    );

    // Call the logging hooks to log/process the message
    foreach (module_implements('watchdog') as $module) {
      module_invoke($module, 'watchdog', $log_entry);
    }

    // It is critical that the semaphore is only cleared here, in the parent
    // watchdog() call (not outside the loop), to prevent recursive execution.
    $in_error_state = FALSE;
  }
}

Comments

Possible values for $severity parameter.

For those interested in immediately knowing all of the possible defined constants available for the $severity parameter, this is from bootstrap.inc:

/**
* Log message severity -- Emergency: system is unusable.
*/
const WATCHDOG_EMERGENCY = 0;

/**
* Log message severity -- Alert: action must be taken immediately.
*/
const WATCHDOG_ALERT = 1;

/**
* Log message severity -- Critical: critical conditions.
*/
const WATCHDOG_CRITICAL = 2;

/**
* Log message severity -- Error: error conditions.
*/
const WATCHDOG_ERROR = 3;

/**
* Log message severity -- Warning: warning conditions.
*/
const WATCHDOG_WARNING = 4;

/**
* Log message severity -- Notice: normal but significant condition.
*/
const WATCHDOG_NOTICE = 5;

/**
* Log message severity -- Informational: informational messages.
*/
const WATCHDOG_INFO = 6;

/**
* Log message severity -- Debug: debug-level messages.
*/
const WATCHDOG_DEBUG = 7;

Login or register to post comments