| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2024-11-25 04:18:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * logging.php | 
					
						
							| 
									
										
										
										
											2020-03-17 16:06:30 +00:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org. | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare(strict_types=1); | 
					
						
							| 
									
										
										
										
											2019-02-09 20:44:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 07:13:59 +01:00
										 |  |  | use FireflyIII\Support\Logging\AuditLogger; | 
					
						
							| 
									
										
										
										
											2021-10-03 06:48:22 +02:00
										 |  |  | use Monolog\Handler\SyslogUdpHandler; | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  | // standard config for both log things:
 | 
					
						
							| 
									
										
										
										
											2024-01-01 14:45:51 +01:00
										 |  |  | $defaultChannels    = ['daily', 'stdout']; | 
					
						
							|  |  |  | $auditChannels      = ['audit_daily', 'audit_stdout']; | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | // validChannels is missing 'stack' because we already check for that one.
 | 
					
						
							|  |  |  | $validChannels      = ['single', 'papertrail', 'stdout', 'daily', 'syslog', 'errorlog']; | 
					
						
							|  |  |  | $validAuditChannels = ['audit_papertrail', 'audit_stdout', 'audit_stdout', 'audit_daily', 'audit_syslog', 'audit_errorlog']; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // which settings did the user set, if any?
 | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  | $defaultLogChannel  = (string) envNonEmpty('LOG_CHANNEL', 'stack'); | 
					
						
							|  |  |  | $auditLogChannel    = (string) envNonEmpty('AUDIT_LOG_CHANNEL', ''); | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | if ('stack' === $defaultLogChannel) { | 
					
						
							|  |  |  |     $defaultChannels = ['daily', 'stdout']; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | if (in_array($defaultLogChannel, $validChannels, true)) { | 
					
						
							|  |  |  |     $defaultChannels = [$defaultLogChannel]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (in_array($auditLogChannel, $validAuditChannels, true)) { | 
					
						
							|  |  |  |     $auditChannels = [$auditLogChannel]; | 
					
						
							| 
									
										
										
										
											2023-08-30 15:38:15 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  | return [ | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  |     |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |     | Default Log Channel | 
					
						
							|  |  |  |     |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |     | | 
					
						
							|  |  |  |     | This option defines the default log channel that gets used when writing | 
					
						
							|  |  |  |     | messages to the logs. The name specified in this option should match | 
					
						
							|  |  |  |     | one of the channels defined in the "channels" configuration array. | 
					
						
							|  |  |  |     | | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-01 14:45:51 +01:00
										 |  |  |     'default'  => envNonEmpty('LOG_CHANNEL', 'stack'), | 
					
						
							|  |  |  |     'level'    => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |     /* | 
					
						
							|  |  |  |     |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |     | Log Channels | 
					
						
							|  |  |  |     |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |     | | 
					
						
							|  |  |  |     | Here you may configure the log channels for your application. Out of | 
					
						
							|  |  |  |     | the box, Laravel uses the Monolog PHP logging library. This gives | 
					
						
							|  |  |  |     | you a variety of powerful log handlers / formatters to utilize. | 
					
						
							|  |  |  |     | | 
					
						
							|  |  |  |     | Available Drivers: "single", "daily", "slack", "syslog", | 
					
						
							|  |  |  |     |                    "errorlog", "custom", "stack" | 
					
						
							|  |  |  |     | | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'channels' => [ | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         /* | 
					
						
							|  |  |  |          * 'stack' and 'audit' are the two "generic" channels that | 
					
						
							|  |  |  |          * are valid destinations for logs. | 
					
						
							|  |  |  |          */ | 
					
						
							|  |  |  |         'stack'            => [ | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |             'driver'   => 'stack', | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |             'channels' => $defaultChannels, | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'audit'            => [ | 
					
						
							| 
									
										
										
										
											2020-08-13 13:18:54 +02:00
										 |  |  |             'driver'   => 'stack', | 
					
						
							| 
									
										
										
										
											2023-08-30 15:38:15 +02:00
										 |  |  |             'channels' => $auditChannels, | 
					
						
							| 
									
										
										
										
											2020-08-13 13:18:54 +02:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-12-20 19:39:53 +01:00
										 |  |  |         // There are 6 valid destinations for the normal logs, listed below:
 | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'single'           => [ | 
					
						
							|  |  |  |             'driver' => 'single', | 
					
						
							|  |  |  |             'path'   => storage_path('logs/laravel.log'), | 
					
						
							|  |  |  |             'level'  => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'papertrail'       => [ | 
					
						
							| 
									
										
										
										
											2022-03-29 15:01:12 +02:00
										 |  |  |             'driver'       => 'monolog', | 
					
						
							|  |  |  |             'level'        => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |             'handler'      => SyslogUdpHandler::class, | 
					
						
							| 
									
										
										
										
											2021-10-03 06:48:22 +02:00
										 |  |  |             'handler_with' => [ | 
					
						
							|  |  |  |                 'host' => env('PAPERTRAIL_HOST'), | 
					
						
							|  |  |  |                 'port' => env('PAPERTRAIL_PORT'), | 
					
						
							|  |  |  |             ], | 
					
						
							| 
									
										
										
										
											2021-10-03 06:26:25 +02:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'stdout'           => [ | 
					
						
							| 
									
										
										
										
											2018-08-17 20:01:46 +02:00
										 |  |  |             'driver' => 'single', | 
					
						
							|  |  |  |             'path'   => 'php://stdout', | 
					
						
							|  |  |  |             'level'  => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'daily'            => [ | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |             'driver' => 'daily', | 
					
						
							| 
									
										
										
										
											2023-12-20 19:39:53 +01:00
										 |  |  |             'path'   => storage_path('logs/ff3-'.PHP_SAPI.'.log'), | 
					
						
							| 
									
										
										
										
											2018-04-27 06:26:37 +02:00
										 |  |  |             'level'  => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |             'days'   => 7, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'syslog'           => [ | 
					
						
							|  |  |  |             'driver' => 'syslog', | 
					
						
							|  |  |  |             'level'  => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'errorlog'         => [ | 
					
						
							|  |  |  |             'driver' => 'errorlog', | 
					
						
							|  |  |  |             'level'  => envNonEmpty('APP_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2021-10-03 06:26:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         /* | 
					
						
							|  |  |  |          * There are 5 valid destinations for the audit logs, listed below. | 
					
						
							|  |  |  |          * The only one missing is "single". | 
					
						
							|  |  |  |          */ | 
					
						
							|  |  |  |         'audit_papertrail' => [ | 
					
						
							|  |  |  |             'driver'       => 'monolog', | 
					
						
							|  |  |  |             'level'        => envNonEmpty('AUDIT_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |             'handler'      => SyslogUdpHandler::class, | 
					
						
							|  |  |  |             'tap'          => [AuditLogger::class], | 
					
						
							|  |  |  |             'handler_with' => [ | 
					
						
							|  |  |  |                 'host' => env('PAPERTRAIL_HOST'), | 
					
						
							|  |  |  |                 'port' => env('PAPERTRAIL_PORT'), | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'audit_stdout'     => [ | 
					
						
							|  |  |  |             'driver' => 'single', | 
					
						
							|  |  |  |             'path'   => 'php://stdout', | 
					
						
							|  |  |  |             'tap'    => [AuditLogger::class], | 
					
						
							|  |  |  |             'level'  => envNonEmpty('AUDIT_LOG_LEVEL', 'info'), | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'audit_daily'      => [ | 
					
						
							| 
									
										
										
										
											2020-08-13 13:18:54 +02:00
										 |  |  |             'driver' => 'daily', | 
					
						
							| 
									
										
										
										
											2019-02-08 07:13:59 +01:00
										 |  |  |             'path'   => storage_path('logs/ff3-audit.log'), | 
					
						
							| 
									
										
										
										
											2019-02-09 20:44:31 +01:00
										 |  |  |             'tap'    => [AuditLogger::class], | 
					
						
							| 
									
										
										
										
											2020-11-20 15:44:17 +01:00
										 |  |  |             'level'  => envNonEmpty('AUDIT_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2019-02-08 07:13:59 +01:00
										 |  |  |             'days'   => 90, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'audit_syslog'     => [ | 
					
						
							|  |  |  |             'driver' => 'syslog', | 
					
						
							| 
									
										
										
										
											2020-08-13 13:55:16 +02:00
										 |  |  |             'tap'    => [AuditLogger::class], | 
					
						
							| 
									
										
										
										
											2021-03-14 16:08:49 +01:00
										 |  |  |             'level'  => envNonEmpty('AUDIT_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2020-08-13 13:55:16 +02:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |         'audit_errorlog'   => [ | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |             'driver' => 'errorlog', | 
					
						
							| 
									
										
										
										
											2023-08-30 15:57:59 +02:00
										 |  |  |             'tap'    => [AuditLogger::class], | 
					
						
							|  |  |  |             'level'  => envNonEmpty('AUDIT_LOG_LEVEL', 'info'), | 
					
						
							| 
									
										
										
										
											2018-03-07 20:47:39 +01:00
										 |  |  |         ], | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2018-03-19 13:23:26 +01:00
										 |  |  | ]; |