日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

坑爹!千万不要在生产环境使用控制台日志

發(fā)布時間:2023/12/4 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 坑爹!千万不要在生产环境使用控制台日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

某控制臺應用程序會隨機卡死,一直找不到原因。無意中在控制臺敲了下回車,發(fā)現程序居然恢復正常了。

最后在stackoverflow上找到了這個帖子:How and why does QuickEdit mode in Command Prompt freeze applications?[1]

原來是“快速編輯模式”造成的。

快速編輯模式

快速編輯模式是Windows的一項功能,它允許用戶在命令提示符窗口中使用鼠標選擇文本(單擊并在所需文本上拖動鼠標)。默認情況下此功能是開啟的:

不知是何原因,應用程序所在控制臺接收到了鼠標事件,導致進入快速編輯模式,等待我們確定選中文本,而這時應用程序需要向控制臺輸出日志,結果導致死鎖。

所以解決方案是關閉快速編輯模式。

關閉快速編輯模式

可以在“控制臺窗口 屬性”中設置默認值,取消“快速編輯模式”選項。

但是,為了避免部署時疏漏,使用代碼自動禁用應用程序的快速編輯:

const?uint?ENABLE_QUICK_EDIT?=?0x0040;const?int?STD_INPUT_HANDLE?=?-10;[DllImport("kernel32.dll",?SetLastError?=?true)] static?extern?IntPtr?GetStdHandle(int?nStdHandle);[DllImport("kernel32.dll")] static?extern?bool?GetConsoleMode(IntPtr?hConsoleHandle,?out?uint?lpMode);[DllImport("kernel32.dll")] static?extern?bool?SetConsoleMode(IntPtr?hConsoleHandle,?uint?dwMode);public?static?void?Main(string[]?args) {IntPtr?consoleHandle?=?GetStdHandle(STD_INPUT_HANDLE);uint?consoleMode;GetConsoleMode(consoleHandle,?out?consoleMode);consoleMode?&=?~ENABLE_QUICK_EDIT;SetConsoleMode(consoleHandle,?consoleMode);... }

關閉控制臺日志

在生產環(huán)境,很少需要查看控制臺日志。因此,更好的方式是關閉控制臺日志,這樣對程序性能也有一定好處。

public?static?IHostBuilder?CreateHostBuilder(string[]?args)?=>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder?=>{webBuilder.ConfigureLogging(config?=>{//清空默認配置config.ClearProviders();//使用第三方log});webBuilder.UseStartup<Startup>();});

結論

本文的情況你可能永遠不會碰到,但是對于這種隱患,建議你不要在生產環(huán)境使用控制臺日志。

如果你覺得這篇文章對你有所啟發(fā),請關注我的個人公眾號”My IO“,記住我!

參考資料

[1]

How and why does QuickEdit mode in Command Prompt freeze applications?: https://stackoverflow.com/questions/30418886/how-and-why-does-quickedit-mode-in-command-prompt-freeze-applications

總結

以上是生活随笔為你收集整理的坑爹!千万不要在生产环境使用控制台日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。