@@ -422,6 +422,80 @@ def test_capture_fd_to_logger(self):
422
422
finally :
423
423
logger .propagate , logger .handlers = orig
424
424
425
+ def test_capture_to_logger_adapter (self ):
426
+ class Adapter (logging .LoggerAdapter ):
427
+ def process (self , msg , kwargs ):
428
+ return '[%s] %s' % (self .extra ['foo' ], msg ), kwargs
429
+
430
+ logger = logging .getLogger ('_pyomo_no_logger' )
431
+ adapter = Adapter (logger , {"foo" : 42 })
432
+ lstream = LogStream (logging .WARNING , adapter )
433
+ orig = logger .propagate , logger .handlers
434
+ try :
435
+ logger .propagate = False
436
+ logger .handlers = []
437
+ with LoggingIntercept (module = '_pyomo_no_logger' ) as LOG :
438
+ with tee .capture_output (lstream , capture_fd = False ):
439
+ sys .stderr .write ("hi!\n " )
440
+ sys .stderr .flush ()
441
+ self .assertEqual (LOG .getvalue (), "[42] hi!\n " )
442
+
443
+ # test that we handle the lastResort logger correctly
444
+ _lastResort = logging .lastResort
445
+ with tee .capture_output () as OUT :
446
+ with tee .capture_output (lstream , capture_fd = False ):
447
+ self .assertIsNot (_lastResort , logging .lastResort )
448
+ sys .stderr .write ("hi?\n " )
449
+ self .assertEqual (OUT .getvalue (), "[42] hi?\n " )
450
+
451
+ # test that we allow redirect-to-logger out
452
+ with tee .capture_output () as OUT :
453
+ logger .addHandler (logging .NullHandler ())
454
+ logger .addHandler (logging .StreamHandler (sys .stderr ))
455
+ with tee .capture_output (lstream , capture_fd = False ):
456
+ sys .stderr .write ("hi.\n " )
457
+ self .assertEqual (OUT .getvalue (), "[42] hi.\n " )
458
+ logger .handlers .clear ()
459
+ finally :
460
+ logger .propagate , logger .handlers = orig
461
+
462
+ def test_capture_fd_to_logger_adapter (self ):
463
+ class Adapter (logging .LoggerAdapter ):
464
+ def process (self , msg , kwargs ):
465
+ return '[%s] %s' % (self .extra ['foo' ], msg ), kwargs
466
+
467
+ logger = logging .getLogger ('_pyomo_no_logger' )
468
+ adapter = Adapter (logger , {"foo" : 42 })
469
+ lstream = LogStream (logging .WARNING , adapter )
470
+ orig = logger .propagate , logger .handlers
471
+ try :
472
+ logger .propagate = False
473
+ logger .handlers = []
474
+ with LoggingIntercept (module = '_pyomo_no_logger' ) as LOG :
475
+ with tee .capture_output (lstream , capture_fd = True ):
476
+ sys .stderr .write ("hi!\n " )
477
+ sys .stderr .flush ()
478
+ self .assertEqual (LOG .getvalue (), "[42] hi!\n " )
479
+
480
+ # test that we handle the lastResort logger correctly
481
+ _lastResort = logging .lastResort
482
+ with tee .capture_output () as OUT :
483
+ with tee .capture_output (lstream , capture_fd = True ):
484
+ self .assertIsNot (_lastResort , logging .lastResort )
485
+ sys .stderr .write ("hi?\n " )
486
+ self .assertEqual (OUT .getvalue (), "[42] hi?\n " )
487
+
488
+ # test that we allow redirect-to-logger out
489
+ with tee .capture_output () as OUT :
490
+ logger .addHandler (logging .NullHandler ())
491
+ logger .addHandler (logging .StreamHandler (sys .stderr ))
492
+ with tee .capture_output (lstream , capture_fd = True ):
493
+ sys .stderr .write ("hi.\n " )
494
+ self .assertEqual (OUT .getvalue (), "[42] hi.\n " )
495
+ logger .handlers .clear ()
496
+ finally :
497
+ logger .propagate , logger .handlers = orig
498
+
425
499
def test_no_fileno_stdout (self ):
426
500
T = tee .capture_output ()
427
501
with T :
0 commit comments