一.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.客户端
和之前的一样。