@@ -197,9 +197,7 @@ public function save(array $log = []): bool
197
197
'css ' => $ this ->css [$ type ] ?? '' ,
198
198
];
199
199
foreach ($ messages as $ msg ) {
200
- if (!is_string ($ msg )) {
201
- $ msg = var_export ($ msg , true );
202
- }
200
+ $ msg = $ this ->normalizeMessage ($ msg );
203
201
$ msg = $ format ? $ this ->formatMessage ($ format , $ type , $ msg ) : "[ {$ type }] {$ msg }" ;
204
202
$ trace [] = [
205
203
'type ' => 'log ' ,
@@ -222,9 +220,7 @@ public function save(array $log = []): bool
222
220
foreach ($ this ->logReader ($ log , false ) as $ item ) {
223
221
[$ type , $ messages ] = $ item ;
224
222
$ ctx = $ item [2 ] ?? null ;
225
- if (!is_string ($ messages )) {
226
- $ messages = var_export ($ messages , true );
227
- }
223
+ $ messages = $ this ->normalizeMessage ($ messages );
228
224
$ css = $ this ->css2 [$ type ] ?? '' ;
229
225
if (in_array ($ css , self ::LogLevelSet, true )) {
230
226
$ css = $ this ->css2 [$ css ] ?? '' ;
@@ -288,6 +284,23 @@ public function save(array $log = []): bool
288
284
return true ;
289
285
}
290
286
287
+ protected function normalizeMessage ($ message ): string
288
+ {
289
+ if (!\is_string ($ message )) {
290
+ if ((is_object ($ message ) && method_exists ($ message , '__toString ' )) || $ message instanceof \Stringable) {
291
+ $ message = (string ) $ message ;
292
+ } else {
293
+ try {
294
+ $ message = var_export ($ message , true );
295
+ } catch (\Throwable $ e ) {
296
+ $ message = '[Unable to cast to string] ' ;
297
+ }
298
+ }
299
+ }
300
+
301
+ return $ message ;
302
+ }
303
+
291
304
protected function formatMessage (string $ format , string $ level , string $ messages , ?array $ context = null ): string
292
305
{
293
306
if (!str_contains ($ format , '{ ' )) {
0 commit comments