Modules

Log
extends Kohana_Log

Message logging with observer-based log writing.

This class does not support extensions, only additional writers.

package
Kohana
category
Logging
author
Kohana Team
copyright
© 2008-2012 Kohana Team
license
http://kohanaframework.org/license

Class declared in SYSPATH/classes/log.php on line 3.

Constants

EMERGENCY

integer 0

ALERT

integer 1

CRITICAL

integer 2

ERROR

integer 3

WARNING

integer 4

NOTICE

integer 5

INFO

integer 6

DEBUG

integer 7

STRACE

integer 8

Properties

public static string $timestamp

timestamp format for log entries

string(11) "Y-m-d H:i:s"

public static string $timezone

timezone for log entries

NULL

public static boolean $write_on_add

immediately write when logs are added

bool FALSE

protected static Log $_instance

Singleton instance container

object Log()

protected array $_messages

list of added messages

protected array $_writers

list of log writers

Methods

public add( string $level , string $message [, array $values = NULL ] ) (defined in Kohana_Log)

Adds a message to the log. Replacement values must be passed in to be replaced using strtr.

$log->add(Log::ERROR, 'Could not locate user: :user', array(
    ':user' => $username,
));

Parameters

  • string $level required - Level of message
  • string $message required - Message body
  • array $values = NULL - Values to replace in the message

Return Values

  • Log

Source Code

public function add($level, $message, array $values = NULL)
{
    if ($values)
    {
        // Insert the values into the message
        $message = strtr($message, $values);
    }
 
    // Create a new message and timestamp it
    $this->_messages[] = array
    (
        'time'  => Date::formatted_time('now', Log::$timestamp, Log::$timezone),
        'level' => $level,
        'body'  => $message,
    );
 
    if (Log::$write_on_add)
    {
        // Write logs as they are added
        $this->write();
    }
 
    return $this;
}

public attach( Log_Writer $writer [, mixed $levels = array(0) , integer $min_level = integer 0 ] ) (defined in Kohana_Log)

Attaches a log writer, and optionally limits the levels of messages that will be written by the writer.

$log->attach($writer);

Parameters

  • Log_Writer $writer required - Instance
  • mixed $levels = array(0) - Array of messages levels to write OR max level to write
  • integer $min_level = integer 0 - Min level to write IF $levels is not an array

Return Values

  • Log

Source Code

public function attach(Log_Writer $writer, $levels = array(), $min_level = 0)
{
    if ( ! is_array($levels))
    {
        $levels = range($min_level, $levels);
    }
     
    $this->_writers["{$writer}"] = array
    (
        'object' => $writer,
        'levels' => $levels
    );
 
    return $this;
}

public detach( Log_Writer $writer ) (defined in Kohana_Log)

Detaches a log writer. The same writer object must be used.

$log->detach($writer);

Parameters

  • Log_Writer $writer required - Instance

Return Values

  • Log

Source Code

public function detach(Log_Writer $writer)
{
    // Remove the writer
    unset($this->_writers["{$writer}"]);
 
    return $this;
}

public static instance( ) (defined in Kohana_Log)

Get the singleton instance of this class and enable writing at shutdown.

$log = Log::instance();

Return Values

  • Log

Source Code

public static function instance()
{
    if (Log::$_instance === NULL)
    {
        // Create a new instance
        Log::$_instance = new Log;
 
        // Write the logs at shutdown
        register_shutdown_function(array(Log::$_instance, 'write'));
    }
 
    return Log::$_instance;
}

public write( ) (defined in Kohana_Log)

Write and clear all of the messages.

$log->write();

Return Values

  • void

Source Code

public function write()
{
    if (empty($this->_messages))
    {
        // There is nothing to write, move along
        return;
    }
 
    // Import all messages locally
    $messages = $this->_messages;
 
    // Reset the messages array
    $this->_messages = array();
 
    foreach ($this->_writers as $writer)
    {
        if (empty($writer['levels']))
        {
            // Write all of the messages
            $writer['object']->write($messages);
        }
        else
        {
            // Filtered messages
            $filtered = array();
 
            foreach ($messages as $message)
            {
                if (in_array($message['level'], $writer['levels']))
                {
                    // Writer accepts this kind of message
                    $filtered[] = $message;
                }
            }
 
            // Write the filtered messages
            $writer['object']->write($filtered);
        }
    }
}