package Ġcom . github . mma uro 9 4 . media _ mer ger . util . log Ċ Ċ import Ġcom . github . mma uro 9 4 . media _ mer ger . Main Ċ import Ġjava . io . File Ċ Ċ interface ĠLogger Container < T > Ġ{ ĊĊĠĠĠ Ġval Ġbase Logger : ĠLogger ĊĊĠĠĠ Ġfun Ġcreate ( logger : ĠLogger ): ĠT ĊĊĠĠĠ Ġfun Ġprepend ( str : ĠString ) Ġ= Ġcreate ( ĊĠĠĠĠĠĠĠ ĠLogger ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Ġ= Ġ{ Ġmessage , Ġtype Ġ-> Ġbase Logger . log ( message . split ("\ n "). join ToString ("\ n ") Ġ{ Ġstr Ġ+ Ġit Ġ}, Ġtype ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug File Ġ= Ġbase Logger . debug File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint To Debug Ġ= Ġbase Logger . print To Debug ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġprepend Debug ( str : ĠString ) Ġ= Ġcreate ( ĊĠĠĠĠĠĠĠ ĠLogger ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Ġ= Ġbase Logger . log , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Transform Ġ= Ġ{ Ġmessage Ġ-> Ġmessage . split ("\ n "). join ToString ("\ n ") Ġ{ Ġstr Ġ+ Ġit Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug File Ġ= Ġbase Logger . debug File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint To Debug Ġ= Ġbase Logger . print To Debug ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwith Debug ( file : ĠFile ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ( Logger ( base Logger . log , Ġbase Logger . debug Transform , Ġfile , ĠMain . debug )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< T , ĠR > ĠLogger Container < T >. with Prepend Debug ( str : ĠString , Ġblock : ĠT . () Ġ-> ĠR ): ĠR Ġ{ ĊĠĠĠ Ġreturn Ġblock ( prepend Debug ( str )) Ċ }