26 const SIMPLE_FORMAT =
"[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n";
68 public function format(array $record)
70 $vars = parent::format($record);
74 foreach ($vars[
'extra'] as $var => $val) {
75 if (
false !== strpos($output,
'%extra.'.$var.
'%')) {
76 $output = str_replace(
'%extra.'.$var.
'%', $this->stringify($val), $output);
77 unset($vars[
'extra'][$var]);
82 if (empty($vars[
'context'])) {
83 unset($vars[
'context']);
84 $output = str_replace(
'%context%',
'', $output);
87 if (empty($vars[
'extra'])) {
88 unset($vars[
'extra']);
89 $output = str_replace(
'%extra%',
'', $output);
93 foreach ($vars as $var => $val) {
94 if (
false !== strpos($output,
'%'.$var.
'%')) {
95 $output = str_replace(
'%'.$var.
'%', $this->stringify($val), $output);
105 foreach ($records as $record) {
106 $message .= $this->
format($record);
120 if ($previous = $e->getPrevious()) {
122 $previousText .=
', '.get_class($previous).
'(code: '.$previous->getCode().
'): '.$previous->getMessage().
' at '.$previous->getFile().
':'.$previous->getLine();
123 }
while ($previous = $previous->getPrevious());
126 $str =
'[object] ('.get_class($e).
'(code: '.$e->getCode().
'): '.$e->getMessage().
' at '.$e->getFile().
':'.$e->getLine().$previousText.
')';
128 $str .=
"\n[stacktrace]\n".$e->getTraceAsString();
137 return var_export(
$data,
true);
140 if (is_scalar(
$data)) {
141 return (
string)
$data;
144 if (version_compare(PHP_VERSION,
'5.4.0',
'>=')) {
148 return str_replace(
'\\/',
'/', @json_encode(
$data));
157 return str_replace(array(
"\r\n",
"\r",
"\n"),
' ', $str);
while(false !==( $line=fgets( $in))) if(! $columns) $ignore