@@ -82,7 +82,7 @@ use bitcoin::secp256k1::{self, PublicKey, Scalar, Secp256k1, SecretKey};
8282use lightning_invoice:: RawBolt11Invoice ;
8383use tracing:: field:: { Field , Visit } ;
8484use tracing:: span:: { Attributes , Id } ;
85- use tracing:: { Event , Metadata , Subscriber } ;
85+ use tracing:: { event , Event , Metadata , Subscriber } ;
8686use tracing_subscriber:: registry:: LookupSpan ;
8787use tracing_subscriber:: { layer, Layer } ;
8888
@@ -1736,6 +1736,45 @@ impl Logger for TestLogger {
17361736 }
17371737}
17381738
1739+ struct FieldVisitor {
1740+ name : Option < String > ,
1741+ }
1742+
1743+ impl Visit for FieldVisitor {
1744+ fn record_str ( & mut self , field : & tracing:: field:: Field , value : & str ) {
1745+ if field. name ( ) == "name" {
1746+ self . name = Some ( value. to_string ( ) ) ;
1747+ }
1748+ }
1749+
1750+ fn record_debug ( & mut self , field : & tracing:: field:: Field , value : & dyn std:: fmt:: Debug ) { }
1751+ }
1752+
1753+ pub struct HighlightLayer ;
1754+
1755+ impl < S > Layer < S > for HighlightLayer
1756+ where
1757+ S : Subscriber + for < ' a > LookupSpan < ' a > ,
1758+ {
1759+ fn on_new_span (
1760+ & self , attrs : & tracing:: span:: Attributes < ' _ > , id : & Id ,
1761+ ctx : tracing_subscriber:: layer:: Context < ' _ , S > ,
1762+ ) {
1763+ let span = ctx. span ( id) . unwrap ( ) ;
1764+ let meta = span. metadata ( ) ;
1765+ if meta. name ( ) == "node" {
1766+ let mut visitor = FieldVisitor { name : None } ;
1767+ attrs. record ( & mut visitor) ;
1768+
1769+ event ! (
1770+ tracing:: Level :: INFO ,
1771+ "NODE \x1b [1;34;47m {} \x1b [0m" ,
1772+ visitor. name. unwrap_or_default( )
1773+ ) ;
1774+ }
1775+ }
1776+ }
1777+
17391778pub struct TestTracerLayer ;
17401779
17411780#[ derive( Debug , Default ) ]
0 commit comments