log4j2測試執行個體-socket集中列印樣本,log4j2-socket
1、需求背景
因為公司最近搭建一個日誌集中管理平台,要求各個系統的日誌都需要傳送到統一的平台上,所以基於此,研究了一下log4j2的socket。
2、準備材料
需要log4j2的兩個jar包:log4j-api-2.1.jar 和 log4j-core-2.1.jar 。(版本需要一直,特別是伺服器上的jar 和 用戶端的jar要保持一致)
3、log4j2的用戶端配置
直接在 IDE中建立java工程。在根目錄src下添加log4j2.xml檔案。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <Configuration> 3 <Appenders> 4 <Socket name="socket" host="IP" port="8086" > 5 <SerializedLayout /> 6 </Socket> 7 <!--在ide中,列印到控制台--> 8 <Console name="console" target="SYSTEM_OUT"> 9 <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>10 </Console>11 </Appenders>12 <Loggers>13 <Root level="info">14 <AppenderRef ref="socket"/>15 <AppenderRef ref="console"/>16 </Root>17 <Logger name="app" level="info" additivity="false">18 <AppenderRef ref="socket" />19 </Logger>20 </Loggers>21 </Configuration>
log4j2.xml
建立用戶端測試java類Log4j2SocketTest
1 import org.apache.logging.log4j.LogManager; 2 import org.apache.logging.log4j.core.Logger; 3 4 public class Log4j2SocketTest { 5 static Logger logger = (Logger) LogManager.getLogger("app"); 6 static Logger logger_default = (Logger) LogManager.getLogger(); 7 8 public static void main(String[] args) { 9 logger.debug("logger.debug....");10 logger.info("logger.info....");11 System.out.println("another");12 logger_default.debug("logger_default.debug");13 logger_default.info("logger_default.info");14 }15 }
Log4j2SocketTest4、log4j2的服務端接收日誌模擬器配置
這個只是類比接收的伺服器,作用是列印到檔案中,方便我們查看伺服器端收到的從用戶端發來的內容。
把這三個檔案放到同一個目錄下:log4j-api-2.1.jar 、 log4j-core-2.1.jar 和 log4j2.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <Configuration> 3 <Appenders> 4 <!-- 控制台輸出 --> 5 <File name="MyFile" fileName="D:/logs/log.log"> 6 <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %C{2} (%F:%L) %L- %msg%n" /> 7 </File> 8 </Appenders> 9 <Loggers>10 <Root level="debug">11 <AppenderRef ref="MyFile"/>12 <AppenderRef ref="STDOUT"/>13 </Root>14 </Loggers>15 </Configuration>
log4j2.xml
這三個檔案放好之後,我們啟動伺服器,如下
java -cp log4j-api-2.2.jar;log4j-core-2.2.jar org.apache.logging.log4j.core.net.server.TcpSocketServer 8085 log4j2.xml
註:linux下jar之間用冒號‘:’,windows下用分好‘;’
5、這樣就可以了,在ide中執行用戶端的日誌列印,同時會上傳到伺服器上。