Netty日誌怎麼用
經常會有人問,為什麼我沒有收到包。為什麼半天才收到包。各種問題,卻沒粘任何程式碼和日誌,讓別人無法幫助他分析問題,自己也陷入迷茫。
其實netty自帶一個日誌記錄的Handler,叫LoggingHandler,這個Handler使用netty的日誌框架列印日誌,而netty預設的日誌是Java的日誌框架java logger,而java的日誌框架預設級別是INFO級別,所以需要我們在pipeline中加入此Handler,則可以列印netty的執行日誌。
netty3程式碼如下:
- Executor workerExecutor = Executors.newCachedThreadPool();
- Executor bossExecutor = Executors.newCachedThreadPool();
- ServerBootstrap server = new ServerBootstrap(new NioServerSocketChannelFactory(bossExecutor, workerExecutor));
- server.setPipelineFactory(new ChannelPipelineFactory() {
- @Override
- public ChannelPipeline getPipeline() throws Exception {
- ChannelPipeline p = Channels.pipeline();
- p.addLast("logging", new LoggingHandler(InternalLogLevel.INFO));
- p.addLast("decoder", new Decoder());
- p.addLast("handler", new Netty3Handler());
- return p;
- }
- });
- server.bind(new InetSocketAddress("127.0.0.1", 9999));
列印的日誌如下
netty4的程式碼如下
- ServerBootstrap server = new ServerBootstrap();
- EventLoopGroup parentGroup = new NioEventLoopGroup();
- EventLoopGroup childGroup = new NioEventLoopGroup();
- server.group(parentGroup, childGroup);
- server.channel(NioServerSocketChannel.class);
- server.childHandler(new ChannelInitializer<SocketChannel>() {
- @Override
- protected void initChannel(SocketChannel ch) throws Exception {
- ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
- ch.pipeline().addLast(new Decoder());
- ch.pipeline().addLast(new Netty4Handler());
- }
- });
- server.childOption(ChannelOption.SO_KEEPALIVE, true);
- server.bind(new InetSocketAddress("127.0.0.1", 9999)).sync().channel().closeFuture().sync();
netty4服務端列印的日誌
(圖片中黑色列印是我自己的列印,紅色才是netty的列印)
客戶端傳送的資料均為模擬斷包粘包,所以第一個收到的包只有2個位元組,而第二個收到的包有10個位元組通過粘包處理,最終收到的訊息分別為10和20.
這樣的日誌清楚明瞭,知道netty什麼時候收到了包,什麼時候傳送了包,更方便自己和他人分析問題的原因。
當然,netty也不是完全使用java 的logger,我們可以設定netty的loggerFactory來使用不同的日誌框架。
只需要在netty程式碼之前執行:
- InternalLoggerFactory.setDefaultFactory(new Log4JLoggerFactory());
即可。netty3和netty4一樣
相關文章
- 應用日誌採集是什麼意思?批次採集應用日誌軟體用哪個?怎麼操作?應用日誌
- GO的日誌怎麼玩Go
- python日誌怎麼儲存Python
- win10 系統開機日誌怎麼看_win10怎麼看電腦日誌Win10
- Win10系統怎麼啟動引導日誌_win10引導日誌啟用教程Win10
- 日誌脫敏是什麼意思?為什麼要做日誌脫敏?用什麼工具好?
- 在linux上怎麼檢視tomcat日誌LinuxTomcat
- 拼多多怎麼檢視賬號日誌?
- Galgame研發日誌:那麼,怎麼才能回本呢?GAM
- python怎麼將列印輸出日誌檔案Python
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- Win10系統日誌怎麼檢視_win10系統日誌在哪裡Win10
- win10日誌檔案在哪裡_win10系統日誌怎麼檢視Win10
- win10日誌檔案缺了怎麼辦_win10日誌缺失如何修復Win10
- win10查詢崩潰日誌方法 win10怎麼檢視崩潰日誌Win10
- win10日誌事件ID455怎麼回事_win10日誌事件ID455是什麼意思Win10事件
- 日誌脫敏工具用什麼好,效果槓槓?
- win10 檢視系統關機日誌方法 win10 關機日誌怎麼看Win10
- win10怎麼看執行日誌 win10檢視執行日誌操作方法Win10
- DolphinScheduler日誌亂碼、worker日誌太多磁碟報警、版本更新導致不相容怎麼辦?
- ELK日誌系統之通用應用程式日誌接入方案
- OpenSIPS 2.4.2 高併發下,日誌丟失怎麼辦
- 好久不更新了,居然忘記怎麼寫日誌了!
- 日誌審計是什麼?為什麼企業需要日誌審計?
- win10 開機關機日誌檢視方法 win10 開關機日誌怎麼看Win10
- win10關機日誌檢視方法_win10電腦關機日誌怎麼檢視Win10
- 運維日誌審計是什麼意思?用什麼工具好?運維
- windows10系統怎麼刪系統日誌_win10如何徹底刪除系統日誌WindowsWin10
- windows10系統開關機日誌怎麼檢視Windows
- 通過helm部署EFK收集應用日誌,ingress-nginx日誌解析。應用日誌Nginx
- 日誌分析-apache日誌分析Apache
- win10系統怎麼檢視系統錯誤日誌_win10如何檢視錯誤日誌Win10
- 什麼是Netty編解碼,Netty編解碼器有哪些?Protostuff怎麼使用?Netty
- 填報表怎麼跟蹤使用者操作,記錄日誌?
- win10電腦自動關機日誌怎麼查詢Win10
- 詳解在TP中怎麼引入ThinkWechat.php並列印日誌PHP
- 達夢資料庫:誤刪除 undo/redo 日誌怎麼辦資料庫
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- 日誌