protocol 指定类型: tcp udp 默认tcp
charset 指定输出字段数据
JsonLayout 是否已json 格式推送 (接收到位json格式)
log4j2 配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- Appenders 输出目的地 -->
<Appenders>
<!-- 配置日志输出文件名字 追加读写 host地址 端口 -->
<Socket name="A1" host="localHost" port="6000" protocol="UDP">
<!-- 输出格式 序列布局-->
<!-- <JsonLayout compact="true" eventEol="true" /> -->
<PatternLayout charset ="message"/>
</Socket>
<!-- 控制台输出 -->
<Console name="STDOUT" target="SYSTEM_OUT">
<!-- 输出格式 布局-->
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- debug级别 -->
<Root level="debug">
<AppenderRef ref="A1"/>
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
客户端
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @see log4j 2.0 简单的配置使用一个文件Appender
* @author Herman.Xiong
* @date 2014年7月21日 14:32:55
*/
public class LogManagerTest {
/**
* 配置日志级别为debug,输出位置为控制台和文件
*/
private static Logger log = LogManager.getLogger(LogManagerTest.class);
public static void main() {
log.info("传输数据1。。。。。。。。。。");
log.info("传输数据2。。。。。。。。。。");
log.exit();
}
}
服务端(tcp)
import java.io.ObjectInputStream;
import java.net.Socket;
public class LogRunner implements Runnable{
private ObjectInputStream ois;
public LogRunner(Socket client) {
try {
this.ois = new ObjectInputStream(client.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
try {
while (true) {
Object obj= ois.readObject();
System.out.println(obj.toString());
System.out.println("===================================");
}
} catch(java.io.EOFException e) {
//读取的时候到达尾端抛出的异常,屏蔽掉
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import org.apache.log4j.Logger;
public class TestServer {
public static void main(String[] args) throws IOException {
int port = 6000;
ServerSocket socket = new ServerSocket(port);
Logger logger = Logger.getLogger(TestServer.class);
logger.info("接收端已开启。。。。。。"+port);
while (true) {
Socket client = socket.accept();
Thread t = new Thread(new LogRunner(client));
t.start();
System.out.println("接收日志成功。。。。。");
}
}
}
udp 服务端
import java.net.*;
import java.io.*;
import java.util.*;
public class UDPServer {
public static void main(String[] args){
// new UDPServer().service();
new UDPServer().receiver();
}
public static void receiver() {
new Thread() {
@Override
public void run() {
// UDP接收端
DatagramSocket ds = null;
try {
/*
* 接收端只需要端口,注意与发送端保持一致
*/
ds = new DatagramSocket(6000);
// 定义将UDP的数据包接收到什么地方
byte[] buf = new byte[5120];
// 定义UDP的数据接收包
DatagramPacket dp = new DatagramPacket(buf, buf.length);
while (true) {
// 接收数据包
ds.receive(dp);
String string = new String(dp.getData(), 0, dp.getLength());
System.out.println("Java UDP:" + dp.getLength() + "->" + string);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
}
}.start();
}
}
接收数据明细
所需jar(maven) log4j-core.xx.jar log4j-api.xxx.jar
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
亲 博主小程序 开发不易 能顺手-----------------微信扫码 ------帮忙增加个访问量吗 非常感谢 谢谢