Lo4j2 SocketAppend远程发送日志—之一

一.SocketAppend
1.服务端
public class SocketAppendServer {

public static void main(String[] args) {
	ServerSocket serverSocket =null;
	InputStream in = null;
	try {
		 serverSocket = new ServerSocket(9090);
		 Socket socket = serverSocket.accept();
		 in =socket.getInputStream();
		 BufferedReader reader=  new BufferedReader(new InputStreamReader(in));
		 String s="";
		 while((s=reader.readLine())!=null){
			 System.out.println("服务端:"+s);
		 }
	} catch (IOException e) {
		e.printStackTrace();
	}
}

}

2.写日志端(客户端)
public class TestSocketAppend {
static Logger log = LogManager.getLogger(TestSocketAppend.class);

public static void main(String[] args) {
	String str = "when life is a hard game dont you blame!!";
	while (true) {
		log.info(str);
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

}
3.xml配置

<Appenders>
	<Socket name="socket" host="localhost" port="9090">
	<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
	</Socket>
</Appenders>
<Loggers>
	<Root level="info">
		<AppenderRef ref="socket" />
	</Root>
</Loggers>

二.实现SSh认证发送
1.生成keystore.jks和truststore.jks认证文件
方法:
a.进入C:\Program Files\Java\jdk1.7.0_65\bin下打开cmd
b.输入keytool -genkeypair -alias certificatekey -keyalg RSA -validity 7 - keystore keystore.jks
c.导出凭证文件 keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfcert.cer
d.将凭证文件 导入到truststore文件 keytool -import -alias certificatekey -file selfcert.cer -keystore truststore.jks
e.在C:\Program Files\Java\jdk1.7.0_65\bin目录有这两个文件
2.服务端代码编写
public class SocketAppendSshServer {

@SuppressWarnings("deprecation")
public static void main(String[] args) {
	String path =System.getProperty("user.dir")+File.separator;//keystore.jks和truststore.jks路径
	KeyStoreConfiguration keyStoreConfig=null;
	InputStream in = null;
	ServerSocket serverSocket =null;
	try {
		keyStoreConfig = new KeyStoreConfiguration(path+"keystore.jks", "123456", null, null);
		TrustStoreConfiguration	trustStoreConfig =new TrustStoreConfiguration(path+"truststore.jks", "123456", null, null);
		SslConfiguration ssl=	SslConfiguration.createSSLConfiguration("SSL", keyStoreConfig, trustStoreConfig);
		SSLServerSocketFactory factory = ssl.getSslServerSocketFactory();	
		serverSocket = factory.createServerSocket(9090);
		Socket socket = serverSocket.accept();
		 in =socket.getInputStream();
		 BufferedReader reader=  new BufferedReader(new InputStreamReader(in));
		 String s="";
		 while((s=reader.readLine())!=null){
			 System.out.println("服务端:"+s);
		 }
	} catch (Exception e1) {
		e1.printStackTrace();
	}finally{
		close(serverSocket, in);
	}
}
private static  void close(ServerSocket serverSocket,InputStream in ) {
	try {
		serverSocket.close();
		in.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

}

3.Xml配置

	<Socket name="socket" host="localhost" port="9090">
			<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
			<SSL>
			<!--password是创建 keystore.jks的秘钥口令, 也就是文件的可访问密码 -->
			<KeyStore location="keystore.jks" password="123456" />
			<TrustStore location="trustStore.jks" password="123456" />
		</SSL>
	</Socket>

4.客户端
和之前的一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值