@@ -87,12 +87,10 @@ public static function getInstance(): Debug
8787 * - use_vardump: Use vardump for debug output? (boolean, default = false)
8888 * - use_htmlentities: Use htmlentities for debug output? (boolean, default = false)
8989 * - log_file: The log file. (string, default = null)
90- * - monolog: Settings for Monolog logger. (array, default = [])
91- * - channel_name: The name of the channel. (string, default = self::CHANNEL_NAME)
92- * - output_format: The output format. (string, default = self::OUTPUT_FORMAT)
93- * - date_format: The date format. (string, default = self::DATE_FORMAT)
90+ * - logger: The logger to use. (Logger, default = null)
9491 *
95- * The settings `log_file` and `monolog` are only used when calling `logValue()`.
92+ * The settings `log_file` and `logger` are only used when calling `logValue()`.
93+ * If `logger` is specified, `log_file` will be ignored.
9694 *
9795 * @param array $settings Settings.
9896 *
@@ -108,44 +106,37 @@ public static function init(array $settings = [])
108106 $ defaultFlags |= self ::USE_HTMLENTITIES ;
109107 }
110108
111- self ::$ Instance = new static ($ defaultFlags , self ::initLogger ($ settings ));
109+ if (isset ($ settings ['logger ' ]) && $ settings ['logger ' ] instanceof Logger) {
110+ $ Logger = $ settings ['logger ' ];
111+ } else {
112+ if (isset ($ settings ['log_file ' ])) {
113+ $ Stream = self ::initStream ($ settings ['log_file ' ]);
114+ } else {
115+ // We didn't get any file to log.
116+ $ Stream = new NullHandler (Logger::DEBUG );
117+ }
118+
119+ $ Logger = new Logger (self ::CHANNEL_NAME );
120+ $ Logger ->pushHandler ($ Stream );
121+ }
122+
123+ self ::$ Instance = new static ($ defaultFlags , $ Logger );
112124 }
113125
114126 /**
115- * Create Monolog logger.
127+ * Create stream handler for logger.
116128 *
117- * @param array $settings Settings .
129+ * @param string $logFile The log file .
118130 *
119- * @return Logger
120- * @see init()
131+ * @return StreamHandler
121132 */
122- private static function initLogger ( array $ settings = [] ): Logger
133+ private static function initStream ( string $ logFile ): StreamHandler
123134 {
124- if (isset ($ settings ['monolog ' ]) && is_array ($ settings ['monolog ' ])) {
125- $ monologSettings = $ settings ['monolog ' ];
126- } else {
127- $ monologSettings = [];
128- }
129-
130- if (isset ($ settings ['log_file ' ])) {
131- // Use default values if not specified otherwise.
132- if (array_key_exists ('output_format ' , $ monologSettings )) {
133- $ output = $ monologSettings ['output_format ' ];
134- } else {
135- $ output = self ::OUTPUT_FORMAT ;
136- }
137- $ dateFormat = $ monologSettings ['date_format ' ] ?? self ::DATE_FORMAT ;
138-
139- $ Stream = new StreamHandler ($ settings ['log_file ' ], Logger::DEBUG );
140- $ Stream ->setFormatter (new LineFormatter ($ output , $ dateFormat , true ));
141- } else {
142- // We didn't get any file to log.
143- $ Stream = new NullHandler (Logger::DEBUG );
144- }
145-
146- $ Logger = new Logger ($ monologSettings ['channel_name ' ] ?? self ::CHANNEL_NAME );
147- $ Logger ->pushHandler ($ Stream );
148- return $ Logger ;
135+ $ Stream = new StreamHandler ($ logFile , Logger::DEBUG );
136+ $ Stream ->setFormatter (
137+ new LineFormatter (self ::OUTPUT_FORMAT , self ::DATE_FORMAT , true )
138+ );
139+ return $ Stream ;
149140 }
150141
151142 /**
0 commit comments