2023年7月19日发(作者:)
在WPF中,使⽤控制台输出⽇志信息⼀、背景之前的项⽬中,使⽤Log4NET将⽇志信息输出到⽂本⽂件中。这种⽅法适⽤于常看以前的⽇志信息,却并不适⽤于实时查看⽇志。本以为Log4NET可以很⽅便地通过配置appender来解决这个问题。⽆奈,个⼈⽔平有限,只能够在控制台程序中实现,⽽在WPF应⽤中没有解决这个问题。后来将解决⽅案转win32。通过调⽤win32函数来直接输出信息到控制台。⼆、解决⽅案帮助类 public class ConsoleLogHelper { [ssUnmanagedCodeSecurity] [DllImport("kernel32", CharSet = )] internal static extern bool AllocConsole(); [ssUnmanagedCodeSecurity] [DllImport("kernel32", CharSet = )] internal static extern bool FreeConsole(); /// /// 在程序启动时,执⾏⼀次即可 /// public static void OpenConsole() { try { var consoleTitle = "App Runtime Log"; AllocConsole(); oundColor = ; Visible = false; = consoleTitle; } catch (Exception) { throw; } } /// /// 该⽅法只在退出程序时,调⽤ /// public static void CloseConsole() { FreeConsole(); } public static void WriteLine(string msg) { ine(ng("yyyy-MM-dd HH:mm:ss")); ine(msg); oundColor = ; } public static void WriteLineError(string msg) { oundColor = ; WriteLine(msg); } public static void WriteLineError(Exception ex) { WriteLineError(e); } public static void WriteLineInfo(string msg) { oundColor = ; WriteLine(msg); } }使⽤ public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { tup(e); nsole(); } protected override void OnExit(ExitEventArgs e) { (e); onsole(); } }使⽤ 使⽤ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Excute(Action action) { for (int i = 0; i < 10; i++) { action(i); } } private void Button_Click_default(object sender, RoutedEventArgs e) { Excute((i)=> { ine($"default-->{ng()}"); }); } private void Button_Click_error(object sender, RoutedEventArgs e) { Excute((i) => { ineError($"error-->{ng()}"); }); } private void Button_Click_exception(object sender, RoutedEventArgs e) { try { string a = null; ng(); } catch (Exception ex) { Excute((i) => { ineError(ex); }); } } private void Button_Click_info(object sender, RoutedEventArgs e) { Excute((i) => { ineInfo($"info-->{ng()}"); }); } }三、分析使⽤核⼼函数AllocConsole()在当前线程中打开⼀个控制台。然后使⽤ine()将信息输出到控制台。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689722360a281116.html
评论列表(0条)