Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 中文字幕欧美在线观看,欧美成人综合视频,在线观看视频欧美

          整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          通過logback中的SocketAppender將特定日志傳輸?shù)椒斩诉M行處理

          參考《logback官方中文版文檔》

          被設計為通過序列化實例把記錄輸出到遠程實體。被序列化的事件的真實類型是, 它實現(xiàn)了接口。盡管如此, 就記錄事件而言, 遠程記錄仍然是無損的。在接收和反序列化后, 事件像是從本地產生的一樣被記錄。運行在不同機器上的多個實例可以把各自的記錄輸出到一個格式固定的中央記錄服務器。

          不關聯(lián)layout, 因為它把序列化的事件發(fā)送到遠程服務器。運作在TCP層上, TCP層提供可靠、有序、流量控制的端到端的二進制流。因此, 如果遠程服務器可訪問, 則記錄事件最終會到達那里。否則, 如果遠程服務器關機或不可訪問, 那么記錄事件會被拋棄。當遠程服務器恢復可用時, 會透明地繼續(xù)傳輸事件。這種透明的重新連接是由一個連接器()線程執(zhí)行的, 它定時嘗試連接服務器。

          記錄事件被本地TCP實現(xiàn)自動地緩沖。這意味著如果服務器連接很慢, 但快于客戶端生成事件的速度, 那么客戶端不會受網絡連接慢的影響。但是如果網絡連接慢于生成事件的速度, 那么客戶端只能按網絡速度執(zhí)行。特別是在服務器宕機這種極端情況下, 客戶端會被阻塞。

          如果連接器線程仍然存在, 即使不再關聯(lián)到任何logger, 也不會被垃圾回收。連接器線程只在當與服務器之間沒有連接時存在。為避免這個垃圾回收問題, 你應當顯式地關閉 。會創(chuàng)建/銷毀很多實例的長期運行的程序應當注意這個垃圾回收問題。多數(shù)其他程序可以安全地忽略這個問題。如果宿主JVM在關閉之前退出了, 不管 被顯式關閉還是交給垃圾回收, 都有可能在管道(pipe)里剩有一些未被傳輸?shù)臄?shù)據(jù), 這些數(shù)據(jù)會丟失。為避免數(shù)據(jù)丟失, 一般在退出程序之前顯式地調用的close()方法或調用的stop()方法就可以了。

          的屬性見下表

          在這里插入圖片描述

          Logback標準發(fā)行包含一個簡單的記錄服務器程序".", 可以支持多個客戶端。它等待來自客戶端的記錄事件, 接收到事件后, 按照本地服務器的記錄策略進行記錄。

          通過傳輸日志例子 一、服務端(用于接收并處理日志)

          1. 編輯.java

          該服務啟動后自動監(jiān)聽端口port:9999發(fā)送過來的日志

          
          package com.zr.server;
           
          import org.slf4j.LoggerFactory;
          import ch.qos.logback.classic.LoggerContext;
          import ch.qos.logback.classic.net.SimpleSocketServer;
           
          public class MyServer {
          	public static void main(String[] args) {
          		LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
          		SimpleSocketServer sss = new SimpleSocketServer(lc, 9999);
          		sss.start();
          	}
          }
          

          集成到spring-boot項目中采用以下方式:

          在啟動類中啟動

          import ...
          

          日志輸出是什么意思_服務器日志輸出設置_日志服務(sls)

          @SpringBootApplication @...("...") @.... public class SpringApplication{ public static void main (String[] args){ LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); SimpleSocketServer sss = new SimpleSocketServer(lc, 9999); //該端口無法寫入spring配置文件,因為啟動加載順序問題,可以添加到環(huán)境變量; SpringApplication.run(SpringApplication.class,args); sss.start(); } }

          2. logback.xml配置文件

          該配置文件就按想要對日志進行處理的操作來配置就行,在第一步的代碼運行后,客戶端傳過來的日志已經被服務端進行記錄了,此時服務端的日志打印內容包括服務端本身的日志和客戶端傳過來的日志,通過配置文件可以選擇將日志進行何種處理。

          一個服務可以監(jiān)聽多個客戶端

          二、客戶端(主服務的日志。發(fā)送給server)

          只需通過配置文件完成:

          logback.xml中Socket傳輸相關配置如下

          <configuration>
           	...
           	<!--將日志傳輸?shù)椒斩诉M行處理-->
          	<appender name="socket" class="ch.qos.logback.classic.net.SocketAppender">
          		<remoteHost>127.0.0.1</remoteHost>
          		<port>9999</port>
          		<ReconnectionDelay>10000</ReconnectionDelay>
          		<IncludeCallerData>false</IncludeCallerData>
          	</appender>
          	
          		<!--采用異步的方式-->
          	<appender name="socket_async" class="ch.qos.logback.classic.AsyncAppender">
          		<filter class="可以自定義filter,只將特定日志進行該操作"/>
          		<appender-ref ref="socket"/>
          	</appender>
           
          	<root level="debug">
          		...
          		<appender-ref ref="socket_async" />
          	</root>
           
          </configuration>
          

          自定義Filter

          package ...
          

          服務器日志輸出設置_日志服務(sls)_日志輸出是什么意思

          import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.filter.Filter; import ch.qos.logback.core.spi.FilterReply; public class MyDBFilter extends Filter<ILoggingEvent> { @Override public FilterReply decide(ILoggingEvent event) { if (event.getMessage() != null && //包含"logsocket"字段的日志才會被操作 event.getFormattedMessage().contains("logsocket")) { return FilterReply.ACCEPT; } else { return FilterReply.DENY; } } }

          logback自帶的不是很強大不能打印客戶端的ip和端口信息,可以自行編寫。


          主站蜘蛛池模板: 国模精品视频一区二区三区| 久久精品国产一区二区电影| 精品一区二区视频在线观看| 色欲AV无码一区二区三区| 无码人妻精品一区二区三区夜夜嗨| 无码人妻精品一区二区在线视频| 国产精品一区不卡| 性无码免费一区二区三区在线| 亚洲av无码一区二区三区观看| 亚洲日韩精品一区二区三区无码| 国产成人高清精品一区二区三区| 免费看无码自慰一区二区| 日韩国产精品无码一区二区三区| 色噜噜狠狠一区二区三区果冻| 国产精品自在拍一区二区不卡| 精品欧洲AV无码一区二区男男| 亚洲国产精品综合一区在线| 日韩高清国产一区在线| 国产一区二区三区高清在线观看| 久久亚洲色一区二区三区| 亚洲午夜日韩高清一区| 精品久久久久一区二区三区| 国产一区韩国女主播| 国产一区二区在线|播放| 无码毛片一区二区三区视频免费播放 | 亚洲av成人一区二区三区| 国产成人精品视频一区二区不卡 | 日本国产一区二区三区在线观看 | 中文字幕永久一区二区三区在线观看| 国产精品亚洲高清一区二区| 国产av一区二区精品久久凹凸| 精品国产福利第一区二区三区| 无码一区二区三区在线观看| 精品无码人妻一区二区免费蜜桃 | 香蕉久久AⅤ一区二区三区| 濑亚美莉在线视频一区| 无码精品人妻一区| 国产AV一区二区三区传媒| 国产精品视频分类一区| 国产麻豆媒一区一区二区三区| 国产免费一区二区视频|