These classes provide a simple factory for creating pre-configured monolog logger objects.
Monolog-Creator supports only a few handlers, formatters and processors of monolog at the moment. So feel free to extend the library.
See the changelog for the updates in between the major versions.
composer require bigpoint/monolog-creator
You have to configure at least the _default
logger and one handler.
index.php
<?php
require 'vendor/autoload.php';
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
],
];
$loggerFactory = new \MonologCreator\Factory($config);
$logger = $loggerFactory->createLogger('name');
$logger->addWarning('I am a warning');
?>
Also you can create different pre-configured loggers. For example with another log level or handler.
index.php
<?php
require 'vendor/autoload.php';
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
"test" => [
"handler" => ["stream"],
"level" => "DEBUG",
],
],
];
$loggerFactory = new \MonologCreator\Factory($config);
$logger = $loggerFactory->createLogger('test');
$logger->addDebug('I am a debug message');
?>
You can configure log output with a formatter. Be aware that a formatter has a general config under the formatter
key and it has to be assigned to specific handler in the handler
section.
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
"formatter" => "json",
],
],
'formatter' => [
'json' => [],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
"test" => [
"handler" => ["stream"],
"level" => "DEBUG",
],
],
];
You can optionally add processors to your logger
$config = [
"logger" => [
"test" => [
"handler" => ["stream"],
"processors" : ["web"],
"level" => "DEBUG",
],
],
];
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
];
$config = [
"handler" => [
'udp' => [
'host' => 'localhost',
'port' => '9999',
],
],
];
RedisHandler (with predis/predis)
To use the Redis handler, you have to create the Predis client object yourself and set it to the Factory, before creating any logger.
$config = [
"handler" => [
'redis' => [
"key" => "php_logs",
]
],
];
$predisClient = new \Predis\Client('tcp://192.168.42.43:6379');
$loggerFactory->setPredisClient($predisClient);
Currently no options are supported here.
$config = [
'formatter' => [
'json' => [],
],
];
All values are optional. The boolean values includeStacktraces
, allowInlineLineBreaks
and ignoreEmptyContextAndExtra
can be "true"
or "false"
.
$config = [
'formatter' => [
'line' => [
"format" => "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
"dateFormat" => "Y-m-d H:i:s",
"includeStacktraces" => "true",
"allowInlineLineBreaks" => "true",
"ignoreEmptyContextAndExtra" => "true",
],
],
];
$config = [
'formatter' => [
'logstash' => [
"type" => "test-app"
],
],
];
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["web"],
'level' => 'DEBUG',
],
]
];
Injects a random UUID for each request to make multiple log messages from the same request easier to follow.
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["requestId"],
'level' => 'DEBUG',
],
]
];
Allows you to add high-level or specific fields to the logging data apart from the context
list. These additional fields will be present in the extra
list in the output.
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["extraFields"],
"extraFields" : [
"extra_key1" : "extra_value1",
"extra_key2" : "extra_value2"
],
'level' => 'DEBUG',
],
]
];
- Authors:: Peter Ahrens, Andreas Schleifer (aschleifer@bigpoint.net), Hendrik Meyer
- Contributors:: Sebastian Götze (sgoetze@bigpoint.net)
Copyright:: 2015-2021 Bigpoint GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.