Download the PHP package firehed/simplelogger without Composer
On this page you can find all versions of the php package firehed/simplelogger. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download firehed/simplelogger
More information about firehed/simplelogger
Files in firehed/simplelogger
Package simplelogger
Short Description Logger compatible with PSR-3. Supports writing to files, STDOUT, STDERR, and syslog. Also provides a chain logger which can write to multiple destinations. Allows customizable and pluggable formats, including logfmt.
License MIT
Homepage https://github.com/firehed/simpleLogger
Informations about the package simplelogger
SimpleLogger
SimpleLogger is a PHP library to write logs. It has simple, straightforward defaults with additional customization hooks.
- Drivers: Syslog, stdout, stderr and text file
- Compatible with PSR-3 Standard Logger Interface
- Requirements: PHP >= 8.1
- License: MIT
Usage
Installation
Syslog
Send log messages to Syslog:
Files
Send log messages to a text file:
Stdout and Stderr
These loggers will write to STDOUT or STDERR; i.e. php://stdout
or php://stderr
.
Stdout is very commonly used for Docker and/or Kubernetes.
Minimum log level for loggers
In this example, only messages with the level >= "error" will be sent to the Syslog handler but everything is sent to the File handler:
The minimum log level is LogLevel::DEBUG
by default.
Formatting
Starting in 3.0.0, message format customization can be accomplished in several ways:
- Initialize
DefaultFormatter
, change its format withsetFormat(string $format)
, and pass it to your logger's constructor - Use a different bundled formatter, such as
LogFmtFormatter
- Create a class that implements
FormatterInterface
and pass that to your logger's constructor
DefaultFormatter
The format provided MUST include %s
, which is where the actual interpolated message will be placed.
Formats MAY include {date}
and/or {level}
, which are placeholders for the timestamp and log level respectively.
The default format is [{date}] [{level}] %s
, which will result in a log message like this:
The date defaults to ATOM format, but can also be customized via setDateFormat(string $format)
using any format string that date()
accepts.
By default, this will ignore exception
keys and perform normal message interpolation.
By calling setRenderExceptions(true)
, the equivalent of (string) $context['exception']
will be appended to the log message if that key is set, so long as that value is Throwable
.
LogFmt
The LogFmtFormatter
will write logs in logfmt
.
By default, the msg
, level
, and ts
keys will be set, and any values in context
that are not interpolated will be added as additional key/value pairs.
Exceptions will also be rendered, in exception_message
, exception_type
, and exception_stacktrace
per OTel conventions.
Any values that resolve to empty strings, or cannot be cast to a string (arrays, objects without __toString()
) will be removed.
[!TIP] Any interpolated values from context will not be put in the key/value pairs. To make the most out of structured log formats such as logfmt, limit interpolation keys in the coded message.
For example, prefer this:
over this:
Custom FormatterInterface
If you need deeper customization, such as log enrichment or more major format shifts, a custom FormatterInterface
is the way to go.
Doing so requires your own interpolation logic, as well as any other message enrichment or formatting.
You'll be passed the same (unmodified) parameters as LoggerInterface::log()
gets, and are responsible for transforming these values into a string.
Sending to multiple loggers
Send log messages to multiple PSR-3 loggers with ChainLogger()
:
The ChainLogger
supports a log level, in addition to loggers it relays to.
This is configuable only by a constructor parameter.
If a log entry is less severe than the configured level, none of the loggers in the chain will receive the message.
Those loggers may opt to do additional filtering.