[英]Redirect Console.Write of specific assembly
在我的C#應用程序中,我通過反射加載另一個程序集。
該另一個程序集使用Console.Write函數寫入控制台。
我只想將輸出重定向到該特定程序集的log4net附加程序。 我希望所有其他程序集繼續輸出到控制台。
我該如何實現?
Console
類具有靜態方法SetOut
,該方法將輸出重定向到StreamWriter
對象。 如果您要的匯編相同,請編寫自己的StreamWriter
擴展類以重定向控制台輸出。 只是為了舉例。
公共類Writer:StreamWriter {private只讀Assembly _assembly;
private readonly StreamWriter _stdout; public Writer(Assembly assembly) : base(Console.OpenStandardOutput()) { _assembly = assembly; _stdout = new StreamWriter(Console.OpenStandardOutput()); } public override void Write(string value) { var st = new StackTrace(); var curent = st.GetFrames(); foreach (var frame in curent) { if (frame.GetMethod().Module.Assembly == _assembly) { _stdout.Write("Redirected: " + value); _stdout.Flush(); return; } } base.Write(value); this.Flush(); }
}
在某些場合,例如一個程序集調用方法,會從另一個程序集寫入控制台。 我不知道如何預測這種行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.