mirror of
				https://github.com/Seldaek/monolog.git
				synced 2025-10-23 09:36:11 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			19 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Log message structure
 | |
| 
 | |
| Within monolog log messages are passed around as arrays, for example to processors or handlers.
 | |
| The table below describes which keys are always available for every log message.
 | |
| 
 | |
| key        | type                      | description
 | |
| -----------|---------------------------|-------------------------------------------------------------------------------
 | |
| message    | string                    | The log message. When the `PsrLogMessageProcessor` is used this string may contain placeholders that will be replaced by variables from the context, e.g., "User {username} logged in" with `['username' => 'John']` as context will be written as "User John logged in".
 | |
| level      | int                       | Severity of the log message. See log levels described in [01-usage.md](01-usage.md#log-levels).
 | |
| level_name | string                    | String representation of log level.
 | |
| context    | array                     | Arbitrary data passed with the construction of the message. For example the username of the current user or their IP address.
 | |
| channel    | string                    | The channel this message was logged to. This is the name that was passed when the logger was created with `new Logger($channel)`.
 | |
| datetime   | Monolog\DateTimeImmutable | Date and time when the message was logged. Class extends `\DateTimeImmutable`.
 | |
| extra      | array                     | A placeholder array where processors can put additional data. Always available, but empty if there are no processors registered.
 | |
| 
 | |
| At first glance `context` and `extra` look very similar, and they are in the sense that they both carry arbitrary data that is related to the log message somehow.
 | |
| The main difference is that `context` can be supplied in user land (it is the 3rd parameter to `Logger::addRecord()`) whereas `extra` is internal only and can be filled by processors.
 | |
| The reason processors write to `extra` and not to `context` is to prevent overriding any user-provided data in `context`.
 |