Skip to content

Instantly share code, notes, and snippets.

@desarrolla2
Last active December 18, 2015 10:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save desarrolla2/5772570 to your computer and use it in GitHub Desktop.
Save desarrolla2/5772570 to your computer and use it in GitHub Desktop.
Charla Monolog
<?php
$record = 'OLA K ASE';
/**
* Log record
*
* @param string $record
*/
function log($record){
$filename = '/path/to/file.log';
file_put_contents($filename, (string) $record, FILE_APPEND);
}
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$logger = new Logger('name');
$logger->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
// add records to the log
$logger->addRecord(Logger::DEBUG, 'Ha');
$logger->addWarning('He');
$logger->addError('Hi', array('user'=>'desarrolla2'));
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$logger = new Logger('name');
$logger->pushProcessor(function ($record) {
$record['extra']['architecture'] = exec('uname -i');
return $record;
});
$handler = new StreamHandler('path/to/your.log', Logger::WARNING);
$handler->pushProcessor(function ($record) {
$record['extra']['load'] = sys_getloadavg();
return $record;
});
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;
$stream = new StreamHandler('path/to/your.log', Logger::WARNING);
$dateFormat = "Y n j, g:i a";
$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
$formatter = new LineFormatter($output, $dateFormat);
$stream->setFormatter($formatter);
<?php
$record = array(
'message' => (string) $message,
'context' => $context,
'level' => $level,
'level_name' => static::getLevelName($level),
'channel' => $this->name,
'datetime' => \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone)->setTimezone(static::$timezone),
'extra' => array(),
);
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\ChromePHPHandler;
use Monolog\Processor\MemoryUsageProcessor;
$channel = 'mysql';
$logger = new Logger($channel);
$handler = new ChromePHPHandler(Logger::DEBUG, true);
$handler->pushProcessor(new MemoryUsageProcessor(true));
$handler->pushProcessor(function($record) {
$info = mysql_info();
$info = 'Rows matched: 65 Changed: 65 Warnings: 0';
$record['extra'] = array_merge(
$record['extra'], array(
'mysql_info' => $info,
)
);
return $record;
});
$logger->pushHandler($handler);
for ($i = 1; $i <= 100; $i++) {
$sql = 'UPDATE table SET ...';
$logger->addRecord(Logger::DEBUG, $sql, array(
'id' => $i
));
}
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\MongoDBHandler;
use Monolog\Handler\NativeMailerHandler;
use Monolog\Formatter\JsonFormatter;
$channel = 'error';
$logger = new Logger($channel);
$logger->popProcessor(function ($record) {
$record['extra']['host'] = gethostname();
return $record;
}
);
$mongo = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "errors", Logger::ERROR);
$mongo->setFormatter(new JsonFormatter());
$mail = new NativeMailerHandler('admin@mycompany.com', 'Producction Error', 'noreply@mycompany.com', Logger::ERROR, true);
$mail->setFormatter(new MyCustomFormatter());
$logger->pushHandler($mongo);
$logger->pushHandler($mail);
class Controller
{
public function doSomething()
{
try {
// Important stuff ...
} catch (\Exception $e) {
$this->container->get('logger.error')->error($e->getMessage(), array(
'user' => $this->getUser(),
'item' => $this->getItem(),
));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment