Skip to main content
Version: 2.x

Writers

The Slim application’s log object has a log writer. The log writer is responsible for sending a logged message to the appropriate output (e.g. STDERR, a log file, a remote web service, Twitter, or a database). Out of the box, the Slim application’s log object has a log writer of class \Slim\LogFileWriter; this log writer directs output to the resource handle referenced by the application environment’s slim.errors key (by default, this is “php://stderr”). You may also define and use a custom log writer.

How to use a custom log writer

A custom log writer must implement the following public interface:

<?php
public function write(mixed $message);

You must tell the Slim application’s log object to use your custom log writer. You can do so in your application’s settings during instantiation like this:

<?php
$app = new \Slim\Slim(array(
'log.writer' => new MyLogWriter()
));

You may also set a custom log writer with middleware like this:

<?php
class CustomLogWriterMiddleware extends \Slim\Middleware
{
public function call()
{
//Set the new log writer
$this->app->log->setWriter(new \MyLogWriter());

//Call next middleware
$this->next->call();
}
}

You can set the log writer similarly in an application hook or route callback like this:

<?php
$app->hook('slim.before', function () use ($app) {
$app->log->setWriter(new \MyLogWriter());
});

If you only need to redirect error output to a different resource handle, use the Slim application's default log writer; it writes log messages to a resource handle. All you need to do is set the slim.errors environment variable to a valid resource handle.