6

I use Cascade'ed Monolog and configure loggers using YAML. This is a part of my config:

formatters:
    dashed:
        class: Monolog\Formatter\LineFormatter
        format: "%datetime%-%channel%.%level_name% - %message%\n"

This is a formatted log line:

2016-12-13 17:49:16-app.INFO - <message>

What is the right format value for \Monolog\Formatter\LineFormatter to get timestamp with milliseconds?

Alex Gusev
  • 1,526
  • 3
  • 16
  • 35

2 Answers2

1

In my Symfony 2.6 project I've a custom log processor so I've implemented the log as service, if it can help here is the piece of code of the service.yml declaration; if you look at logger_formatter, the second argument of the class contructor is the date format:

mybundle.logger:
      class:     Symfony\Bridge\Monolog\Logger
      arguments: [mybundle] # channel
      calls:
          - [pushHandler, [@mybundle.logger_handler]]
          - [pushProcessor, [@mybundle.logger_processor]]

mybundle.logger_processor:
      class:     myBundle\Logging\LogProcessor
      arguments:  ["@session"]

mybundle.logger_handler:
      class:     myBundle\Logging\myBundleRotatingFileHandler #Monolog\Handler\RotatingFileHandler
      arguments: ["@session", %kernel.logs_dir%/LOGGER_SID/%kernel.environment%.mybundle.log, 0, 400] #DEBUG = 100; INFO = 200; NOTICE = 250; WARNING = 300; ERROR = 400; CRITICAL = 500; ALERT = 550; EMERGENCY = 600;
      calls:
          - [setFormatter, [@mybundle.logger_formatter]]
          - [setFilenameFormat, ['{filename}','Y-m-d']]

mybundle.logger_formatter:
      class: Monolog\Formatter\LineFormatter
      arguments:
          - "[%%datetime%%]\t%%extra.remote_addr%%\t%%level_name%%\t%%message%%\t%%extra.request_uri%%\n"
          - "Y-m-d H:i:s.u"
0

On php +8.0 with monolog and datetime use lineFormatter.

Monolog\Formatter\LineFormatter;

For showing only 3 values for milliseconds the mask is: Y-m-d H:i:s.v

2023-08-24 15:35:59.148

For 6 values use the mask is: Y-m-d H:i:s.u

2023-08-24 15:15:14.893727

Without mask, just datetime

2023-08-24T15:05:45.443504+00:00

Sample:

$fileFormatter = new LineFormatter("[%level_name%] | [%datetime%] | [$serverInfo] - [%file%]([%file%:%line%]) - %message%\n", "Y-m-d H:i:s.v");