Kohana_Log

Class Contents

Class declared in SYSPATH/classes/kohana/log.php on line 13.

Properties

public static $timestamp
string(11) "Y-m-d H:i:s"
public static $timezone
NULL
public static $write_on_add
bool FALSE

Methods

public add( )
Kohana_Log

Source Code
public function add($type, $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', self::$timestamp, self::$timezone),
		'type' => $type,
		'body' => $message,
	);

	if (self::$write_on_add)
	{
		// Write logs as they are added
		$this->write();
	}

	return $this;
}

public attach( )
Kohana_Log

Source Code
public function attach(Kohana_Log_Writer $writer, array $types = NULL)
{
	$this->_writers["{$writer}"] = array
	(
		'object' => $writer,
		'types' => $types
	);

	return $this;
}

public detach( )
Kohana_Log

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

	return $this;
}

public static instance( )
Kohana_Log

Source Code
public static function instance()
{
	if (self::$_instance === NULL)
	{
		// Create a new instance
		self::$_instance = new self;

		// Write the logs at shutdown
		register_shutdown_function(array(self::$_instance, 'write'));
	}

	return self::$_instance;
}

public write( )
Kohana_Log

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['types']))
		{
			// Write all of the messages
			$writer['object']->write($messages);
		}
		else
		{
			// Filtered messages
			$filtered = array();

			foreach ($messages as $message)
			{
				if (in_array($message['type'], $writer['types']))
				{
					// Writer accepts this kind of message
					$filtered[] = $message;
				}
			}

			// Write the filtered messages
			$writer['object']->write($filtered);
		}
	}
}