Logger\AbstractLogger
Abstract Source on GitHubAbstract Logger Class
Abstract logger class, providing common functionality. A formatter interface is available as well as an adapter one. Adapters can be created easily using the built in AdapterFactory. A LoggerFactory is also available that allows developers to create new instances of the Logger or load them from config files (see Phalcon\Config\Config object).
@property AdapterInterface[] $adapters @property array<array-key, bool> $excluded @property int $logLevel @property string $name @property DateTimeZone $timezone
Phalcon\Logger\AbstractLogger
Uses DateTimeZone · Exception · Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Logger\Adapter\AdapterInterface · Phalcon\Logger\Exceptions\AdapterNotFound · Phalcon\Logger\Exceptions\NoAdaptersConfigured · Phalcon\Time\Clock\ClockInterface · Phalcon\Time\Clock\SystemClock
Method Summary
public__construct(string $name,array $adapters = [],DateTimeZone|null $timezone = null,ClockInterface|null $clock = null)Constructor.
publicstaticaddAdapter(string $name,AdapterInterface $adapter)Add an adapter to the stack. For processing we use FIFO
publicstaticbegin()Starts a transaction on every (non-excluded) adapter in the stack.
publicstaticcommit()Commits the transaction on every (non-excluded) adapter in the stack.
publicstaticexcludeAdapters(array $adapters = [])Exclude certain adapters.
publicAdapterInterfacegetAdapter(string $name)Returns an adapter from the stack
publicarraygetAdapters()Returns the adapter stack array
publicintgetLogLevel()Returns the log level
publicstringgetName()Returns the name of the logger
publicstaticremoveAdapter(string $name)Removes an adapter from the stack
publicstaticrollback()Rolls back the transaction on every (non-excluded) adapter in the stack.
publicstaticsetAdapters(array $adapters)Sets the adapters stack overriding what is already there
publicstaticsetLogLevel(int $level)Sets the minimum log level for the logger.
protectedbooladdMessage(int $level,string $message,array $context = [])Adds a message to each handler for processing
protectedintgetLevelNumber(mixed $level)Converts the level from string/word to an integer
protectedarraygetLevels()Returns an array of log levels with integer to string conversion
Properties
protectedarray$adapters = []The adapter stack
protectedClockInterface$clockClock used to timestamp log items
protectedarray$excluded = []The excluded adapters for this log process
protectedint$logLevel = Enum::CUSTOMprotectedstring$nameprotectedDateTimeZone$timezoneMethods
__construct()
public function __construct(
string $name,
array $adapters = [],
DateTimeZone|null $timezone = null,
ClockInterface|null $clock = null
);Constructor.
addAdapter()
public function addAdapter(
string $name,
AdapterInterface $adapter
): static;Add an adapter to the stack. For processing we use FIFO
begin()
public function begin(): static;Starts a transaction on every (non-excluded) adapter in the stack.
commit()
public function commit(): static;Commits the transaction on every (non-excluded) adapter in the stack.
excludeAdapters()
public function excludeAdapters( array $adapters = [] ): static;Exclude certain adapters.
getAdapter()
public function getAdapter( string $name ): AdapterInterface;Returns an adapter from the stack
getAdapters()
public function getAdapters(): array;Returns the adapter stack array
getLogLevel()
public function getLogLevel(): int;Returns the log level
getName()
public function getName(): string;Returns the name of the logger
removeAdapter()
public function removeAdapter( string $name ): static;Removes an adapter from the stack
rollback()
public function rollback(): static;Rolls back the transaction on every (non-excluded) adapter in the stack.
setAdapters()
public function setAdapters( array $adapters ): static;Sets the adapters stack overriding what is already there
setLogLevel()
public function setLogLevel( int $level ): static;Sets the minimum log level for the logger.
An unknown level is not rejected: it is stored as CUSTOM, which sits between DEBUG and TRACE in the ordering, so the threshold becomes “everything except TRACE”.
addMessage()
protected function addMessage(
int $level,
string $message,
array $context = []
): bool;Adds a message to each handler for processing
getLevelNumber()
protected function getLevelNumber( mixed $level ): int;Converts the level from string/word to an integer
getLevels()
protected function getLevels(): array;Returns an array of log levels with integer to string conversion
Logger\AdapterFactory
Class Source on GitHubFactory used to create adapters used for Logging
Phalcon\Factory\AbstractConfigFactoryPhalcon\Factory\AbstractFactoryPhalcon\Logger\AdapterFactory
Uses Exception · Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Factory\AbstractFactory · Phalcon\Logger\Adapter\AdapterInterface · Phalcon\Logger\Adapter\Noop · Phalcon\Logger\Adapter\Stream · Phalcon\Logger\Adapter\Syslog
Method Summary
public__construct(array $services = [])AdapterFactory constructor.
publicAdapterInterfacenewInstance(string $name,string $fileName,array $options = [])Create a new instance of the adapter
protectedstringgetExceptionClass()protectedarraygetServices()Returns the available adapters
Methods
__construct()
public function __construct( array $services = [] );AdapterFactory constructor.
newInstance()
public function newInstance(
string $name,
string $fileName,
array $options = []
): AdapterInterface;Create a new instance of the adapter
getExceptionClass()
protected function getExceptionClass(): string;getServices()
protected function getServices(): array;Returns the available adapters
Logger\Adapter\AbstractAdapter
Abstract Source on GitHubClass AbstractAdapter
Phalcon\Logger\Adapter\AbstractAdapter- implementsPhalcon\Logger\Adapter\AdapterInterface
Uses Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Logger\Exceptions\DeserializationFailed · Phalcon\Logger\Exceptions\SerializationFailed · Phalcon\Logger\Exceptions\TransactionAlreadyActive · Phalcon\Logger\Exceptions\TransactionNotActive · Phalcon\Logger\Formatter\FormatterInterface · Phalcon\Logger\Formatter\Line · Phalcon\Logger\Item
Method Summary
public__destruct()Destructor cleanup
publicarray__serialize()publicvoid__unserialize(array $data)publicAdapterInterfaceadd(Item $item)Adds a message to the queue
publicAdapterInterfacebegin()Starts a transaction
publicboolclose()Closes the logger
publicAdapterInterfacecommit()Commits the internal transaction
publicFormatterInterfacegetFormatter()Return the formatter used
publicintgetQueueLimit()Returns the configured transaction-queue cap (0 = unlimited)
publicboolinTransaction()Returns the whether the logger is currently in an active transaction or
publicvoidprocess(Item $item)Processes the message in the adapter
publicAdapterInterfacerollback()Rollbacks the internal transaction
publicAdapterInterfacesetFormatter(FormatterInterface $formatter)Sets the message formatter
publicAdapterInterfacesetQueueLimit(int $queueLimit)Sets the maximum number of items retained in the transaction
protectedstringgetFormattedItem(Item $item)Returns the formatted item
Properties
protectedclass-string<FormatterInterface>$defaultFormatter = Line::className of the default formatter class
protectedFormatterInterface|null$formatter = nullFormatter
protectedbool$inTransaction = falseTells if there is an active transaction or not
protectedarray$queue = []Array with messages queued in the transaction
protectedint$queueLimit = 0Maximum number of items retained in the transaction queue. 0 (default) keeps the original unbounded behavior; a positive value drops the oldest queued item FIFO before a new one is appended in add().
Methods
__destruct()
public function __destruct();Destructor cleanup
Throwing from a destructor is fatal during script shutdown, so an open transaction is auto-committed here (flushing the queued items) rather than throwing.
__serialize()
public function __serialize(): array;__unserialize()
public function __unserialize( array $data ): void;add()
public function add( Item $item ): AdapterInterface;Adds a message to the queue
begin()
public function begin(): AdapterInterface;Starts a transaction
close()
abstract public function close(): bool;Closes the logger
commit()
public function commit(): AdapterInterface;Commits the internal transaction
getFormatter()
public function getFormatter(): FormatterInterface;Return the formatter used
getQueueLimit()
public function getQueueLimit(): int;Returns the configured transaction-queue cap (0 = unlimited)
inTransaction()
public function inTransaction(): bool;Returns the whether the logger is currently in an active transaction or not
process()
abstract public function process( Item $item ): void;Processes the message in the adapter
rollback()
public function rollback(): AdapterInterface;Rollbacks the internal transaction
setFormatter()
public function setFormatter( FormatterInterface $formatter ): AdapterInterface;Sets the message formatter
setQueueLimit()
public function setQueueLimit( int $queueLimit ): AdapterInterface;Sets the maximum number of items retained in the transaction queue. 0 disables the cap (the default; preserves the original unbounded behavior).
getFormattedItem()
protected function getFormattedItem( Item $item ): string;Returns the formatted item
Logger\Adapter\AdapterInterface
Interface Source on GitHubPhalcon\Logger\AdapterInterface
Interface for Phalcon\Logger adapters
Phalcon\Contracts\Logger\Adapter\AdapterPhalcon\Logger\Adapter\AdapterInterface
Uses Phalcon\Contracts\Logger\Adapter\Adapter
Logger\Adapter\Exceptions\FileOpenFailed
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Adapter\Exceptions\FileOpenFailed
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct(
string $name,
string $mode
);Logger\Adapter\Exceptions\InvalidStreamMode
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Adapter\Exceptions\InvalidStreamMode
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Adapter\Exceptions\SyslogOpenFailed
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Adapter\Exceptions\SyslogOpenFailed
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct(
string $name,
int $facility
);Logger\Adapter\Noop
Class Source on GitHubClass Noop
@package Phalcon\Logger\Adapter
Phalcon\Logger\Adapter\AbstractAdapterPhalcon\Logger\Adapter\Noop
Uses Phalcon\Logger\Item
Method Summary
publicboolclose()Closes the stream
publicvoidprocess(Item $item)Processes the message i.e. writes it to the file
Methods
close()
public function close(): bool;Closes the stream
process()
public function process( Item $item ): void;Processes the message i.e. writes it to the file
Logger\Adapter\Stream
Class Source on GitHubPhalcon\Logger\Adapter\Stream
Adapter to store logs in plain text files
$logger = new \Phalcon\Logger\Adapter\Stream('app/logs/test.log');
$logger->log('This is a message');
$logger->log(\Phalcon\Logger\Enum::ERROR, 'This is an error');
$logger->error('This is another error');
$logger->close();@property resource|null $handler @property string $mode @property string $name
Phalcon\Logger\Adapter\AbstractAdapterPhalcon\Logger\Adapter\Stream
Uses Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Logger\Adapter\Exceptions\FileOpenFailed · Phalcon\Logger\Adapter\Exceptions\InvalidStreamMode · Phalcon\Logger\Item · Phalcon\Traits\Php\FileTrait
Method Summary
public__construct(string $name,array $options = [])Stream constructor.
publicboolclose()Closes the stream
publicstringgetName()Stream name
publicvoidprocess(Item $item)Processes the message i.e. writes it to the file
Properties
protectedresource|null$handler = nullStream handler resource
protectedstring$mode = "ab"The file open mode. Defaults to ‘ab’
protectedstring$nameMethods
__construct()
public function __construct(
string $name,
array $options = []
);Stream constructor.
close()
public function close(): bool;Closes the stream
getName()
public function getName(): string;Stream name
process()
public function process( Item $item ): void;Processes the message i.e. writes it to the file
Logger\Adapter\Syslog
Class Source on GitHubClass Syslog
@property string $defaultFormatter @property int $facility @property string $name @property bool $opened @property int $option
Phalcon\Logger\Adapter\AbstractAdapterPhalcon\Logger\Adapter\Syslog
Uses Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Logger\Adapter\Exceptions\SyslogOpenFailed · Phalcon\Logger\Enum · Phalcon\Logger\Item
Method Summary
public__construct(string $name,array $options = [])Syslog constructor.
publicboolclose()Closes the logger
publicvoidprocess(Item $item)Processes the message i.e. writes it to the syslog
protectedboolopenlog(string $ident,int $option,int $facility)Open connection to system logger
Properties
protectedint$facility = 0protectedstring$nameprotectedbool$opened = falseprotectedint$option = 0Methods
__construct()
public function __construct(
string $name,
array $options = []
);Syslog constructor.
close()
public function close(): bool;Closes the logger
process()
public function process( Item $item ): void;Processes the message i.e. writes it to the syslog
openlog()
protected function openlog(
string $ident,
int $option,
int $facility
): bool;Open connection to system logger
Logger\Enum
Class Source on GitHubLog Level Enum constants
Phalcon\Logger\Enum
Constants
intALERT = 2intCRITICAL = 1intCUSTOM = 8Default threshold and fallback sink. It sits between DEBUG (7) and TRACE (9) in the ordering, so the default log level excludes TRACE. It is also the fallback for unknown message levels and invalid setLogLevel() values.
intDEBUG = 7intEMERGENCY = 0intERROR = 3intINFO = 6intNOTICE = 5intTRACE = 9intWARNING = 4Logger\Exception
Class Source on GitHubPhalcon\Logger\Exception
Exceptions thrown in Phalcon\Logger will use this class
\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Adapter\Exceptions\FileOpenFailedPhalcon\Logger\Adapter\Exceptions\InvalidStreamModePhalcon\Logger\Adapter\Exceptions\SyslogOpenFailedPhalcon\Logger\Exceptions\AdapterNotFoundPhalcon\Logger\Exceptions\DeserializationFailedPhalcon\Logger\Exceptions\NoAdaptersConfiguredPhalcon\Logger\Exceptions\SerializationFailedPhalcon\Logger\Exceptions\TransactionAlreadyActivePhalcon\Logger\Exceptions\TransactionNotActive
Logger\Exceptions\AdapterNotFound
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\AdapterNotFound
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct( string $name );Logger\Exceptions\DeserializationFailed
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\DeserializationFailed
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Exceptions\NoAdaptersConfigured
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\NoAdaptersConfigured
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Exceptions\SerializationFailed
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\SerializationFailed
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Exceptions\TransactionAlreadyActive
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\TransactionAlreadyActive
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Exceptions\TransactionNotActive
Class Source on GitHub\ExceptionPhalcon\Logger\ExceptionPhalcon\Logger\Exceptions\TransactionNotActive
Uses Phalcon\Logger\Exception
Method Summary
Methods
__construct()
public function __construct();Logger\Formatter\AbstractFormatter
Abstract Source on GitHubClass AbstractFormatter
Phalcon\Logger\Formatter\AbstractFormatter- implementsPhalcon\Logger\Formatter\FormatterInterface
Uses Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Logger\Item · Phalcon\Traits\Support\Helper\Str\InterpolateTrait · Stringable
Method Summary
publicstringgetDateFormat()publicvoidsetDateFormat(string $format)protectedstringgetFormattedDate(Item $item)Returns the date formatted for the logger.
protectedstringgetInterpolatedMessage(Item $item,string $message)Returns the interpolated message, replacing context placeholders.
protectedarraystringifyContext(array $context)Reduces the log context to the string map interpolation requires.
Properties
protectedstring$dateFormat = "c"Default date format
protectedstring$interpolatorLeft = "%"protectedstring$interpolatorRight = "%"Methods
getDateFormat()
public function getDateFormat(): string;setDateFormat()
public function setDateFormat( string $format ): void;getFormattedDate()
protected function getFormattedDate( Item $item ): string;Returns the date formatted for the logger.
getInterpolatedMessage()
protected function getInterpolatedMessage(
Item $item,
string $message
): string;Returns the interpolated message, replacing context placeholders.
stringifyContext()
protected function stringifyContext( array $context ): array;Reduces the log context to the string map interpolation requires.
Log context is PSR-3 shaped, so its values are arbitrary, while
interpolation replaces a placeholder with a string. Anything that
cannot be expressed as one - an array, an object without
__toString() - substitutes as an empty string, so a placeholder is
never left dangling and a non-stringable value can never abort the
formatter mid-log.
Logger\Formatter\FormatterInterface
Interface Source on GitHubPhalcon\Logger\FormatterInterface
This interface must be implemented by formatters in Phalcon\Logger
Phalcon\Contracts\Logger\Formatter\FormatterPhalcon\Logger\Formatter\FormatterInterface
Uses Phalcon\Contracts\Logger\Formatter\Formatter
Logger\Formatter\Json
Class Source on GitHubFormats messages using JSON encoding
Phalcon\Logger\Formatter\AbstractFormatterPhalcon\Logger\Formatter\Json
Uses JsonException · Phalcon\Logger\Item · Phalcon\Traits\Support\Helper\Json\EncodeTrait
Method Summary
public__construct(string $dateFormat = "c",string $interpolatorLeft = "%",string $interpolatorRight = "%")Json constructor.
publicstringformat(Item $item)Applies a format to a message before sent it to the internal log
Methods
__construct()
public function __construct(
string $dateFormat = "c",
string $interpolatorLeft = "%",
string $interpolatorRight = "%"
);Json constructor.
format()
public function format( Item $item ): string;Applies a format to a message before sent it to the internal log
Logger\Formatter\Line
Class Source on GitHubClass Line
Phalcon\Logger\Formatter\AbstractFormatterPhalcon\Logger\Formatter\Line
Uses Exception · Phalcon\Logger\Item
Method Summary
public__construct(string $format = "[%date%][%level%] %message%",string $dateFormat = "c",string $interpolatorLeft = "%",string $interpolatorRight = "%")Line constructor.
publicstringformat(Item $item)Applies a format to a message before sent it to the internal log
publicstringgetFormat()Return the format applied to each message
publicstaticsetFormat(string $format)Set the format applied to each message
Properties
protectedstring$format = "[%date%][%level%] %message%"Methods
__construct()
public function __construct(
string $format = "[%date%][%level%] %message%",
string $dateFormat = "c",
string $interpolatorLeft = "%",
string $interpolatorRight = "%"
);Line constructor.
format()
public function format( Item $item ): string;Applies a format to a message before sent it to the internal log
getFormat()
public function getFormat(): string;Return the format applied to each message
setFormat()
public function setFormat( string $format ): static;Set the format applied to each message
Logger\Item
Class Source on GitHubPhalcon\Logger\Item
Represents each item in a logging transaction
@property array<string, mixed> $context @property string $message @property int $level @property string $levelName @property DateTimeImmutable $dateTime
Phalcon\Logger\Item
Uses DateTimeImmutable · Phalcon\Contracts\Logger\LoggerTypes
Method Summary
public__construct(string $message,string $levelName,int $level,DateTimeImmutable $dateTime,array $context = [])Item constructor.
publicarraygetContext()publicDateTimeImmutablegetDateTime()publicintgetLevel()publicstringgetLevelName()publicstringgetMessage()Properties
protectedarray$context = []protectedDateTimeImmutable$dateTimeprotectedint$levelprotectedstring$levelNameprotectedstring$messageMethods
__construct()
public function __construct(
string $message,
string $levelName,
int $level,
DateTimeImmutable $dateTime,
array $context = []
);Item constructor.
getContext()
public function getContext(): array;getDateTime()
public function getDateTime(): DateTimeImmutable;getLevel()
public function getLevel(): int;getLevelName()
public function getLevelName(): string;getMessage()
public function getMessage(): string;Logger\Logger
Class Source on GitHubPhalcon Logger.
A logger, with various adapters and formatters. A formatter interface is available as well as an adapter one. Adapters can be created easily using the built-in AdapterFactory. A LoggerFactory is also available that allows developers to create new instances of the Logger or load them from config files (see Phalcon\Config\Config object).
Phalcon\Logger\AbstractLoggerPhalcon\Logger\Logger- implementsPhalcon\Logger\LoggerInterface
Uses Phalcon\Contracts\Logger\LoggerTypes
Method Summary
publicvoidalert(string $message,array $context = [])Action must be taken immediately.
publicvoidcritical(string $message,array $context = [])Critical conditions.
publicvoiddebug(string $message,array $context = [])Detailed debug information.
publicvoidemergency(string $message,array $context = [])System is unusable.
publicvoiderror(string $message,array $context = [])Runtime errors that do not require immediate action but should typically
publicvoidinfo(string $message,array $context = [])Interesting events.
publicvoidlog(mixed $level,string $message,array $context = [])Logs with an arbitrary level.
publicvoidnotice(string $message,array $context = [])Normal but significant events.
publicvoidtrace(string $message,array $context = [])Extra-verbose diagnostic output.
publicvoidwarning(string $message,array $context = [])Exceptional occurrences that are not errors.
Methods
alert()
public function alert(
string $message,
array $context = []
): void;Action must be taken immediately.
Example: Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up.
critical()
public function critical(
string $message,
array $context = []
): void;Critical conditions.
Example: Application component unavailable, unexpected exception.
debug()
public function debug(
string $message,
array $context = []
): void;Detailed debug information.
emergency()
public function emergency(
string $message,
array $context = []
): void;System is unusable.
error()
public function error(
string $message,
array $context = []
): void;Runtime errors that do not require immediate action but should typically be logged and monitored.
info()
public function info(
string $message,
array $context = []
): void;Interesting events.
Example: User logs in, SQL logs.
log()
public function log(
mixed $level,
string $message,
array $context = []
): void;Logs with an arbitrary level.
An unknown level (a typo or an unmapped value) is not rejected; it maps to the CUSTOM level and is logged, rather than raising an exception.
notice()
public function notice(
string $message,
array $context = []
): void;Normal but significant events.
trace()
public function trace(
string $message,
array $context = []
): void;Extra-verbose diagnostic output.
Use for high-frequency, fine-grained events such as raw socket frames, HTTP response bodies, or internal state transitions that are too noisy for DEBUG.
warning()
public function warning(
string $message,
array $context = []
): void;Exceptional occurrences that are not errors.
Example: Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong.
Logger\LoggerFactory
Class Source on GitHubFactory creating logger objects
Phalcon\Factory\AbstractConfigFactoryPhalcon\Logger\LoggerFactory
Uses DateTimeZone · Exception · Phalcon\Config\ConfigInterface · Phalcon\Contracts\Logger\LoggerTypes · Phalcon\Factory\AbstractConfigFactory
Method Summary
public__construct(AdapterFactory $factory)Constructor
publicLoggerload(mixed $config)Factory to create an instance from a Config object
publicLoggernewInstance(string $name,array $adapters = [],DateTimeZone|null $timezone = null)Returns a Logger object
protectedstringgetExceptionClass()Methods
__construct()
public function __construct( AdapterFactory $factory );Constructor
load()
public function load( mixed $config ): Logger;Factory to create an instance from a Config object
The adapter list lives under options, not at the top level.
newInstance()
public function newInstance(
string $name,
array $adapters = [],
DateTimeZone|null $timezone = null
): Logger;Returns a Logger object
getExceptionClass()
protected function getExceptionClass(): string;Logger\LoggerInterface
Interface Source on GitHubInterface for Phalcon based logger objects.
Phalcon\Contracts\Logger\LoggerPhalcon\Logger\LoggerInterface
Uses Phalcon\Contracts\Logger\Logger