Я пытаюсь записывать журналы в приложении SpringBoot на удаленный сервер, используя SocketAppender в Log4j2.Сначала я запускаю приложение слушателя (которое также является приложением с начальной загрузкой), где я реализовал TcpSocketServer , а затем я запускаю свое основное приложение.Я получаю следующие ошибки.Основное приложение работает на localhost: 8080, а приложение прослушивателя - на localhost: 9600.
Я делаю это правильно?Как я могу правильно реализовать эту запись?Я не мог найти подходящий пример в Интернете.
В приложении-слушателе
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
В основном приложении
2019-06-20 17:24:28,091 main ERROR Unable to write to stream
TCP:localhost:9600 for appender socket-appender: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:localhost:9600
2019-06-20 17:24:28,092 main ERROR An exception occurred processing Appender socket-appender org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:localhost:9600
Caused by: java.net.SocketException: Broken pipe (Write failed)
Моя реализация
Конфигурации Log4j2 в основном приложении
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
<Appenders>
<Socket name="socket-appender" host="localhost" port="9600">
<JsonLayout properties="true"/>
</Socket>
</Appenders>
<Loggers>
<AsyncLogger name="socket-appender" level="info">
<AppenderRef ref="socket-appender"/>
</AsyncLogger>
<AsyncRoot level="info">
<AppenderRef ref="socket-appender"/>
</AsyncRoot>
</Loggers>
</Configuration>
Конфигурации Log4j2 в приложении прослушивателя
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="SocketServer">
<Appenders>
<RollingRandomAccessFile name="Rolling-Random-Access-File-Appender"
fileName="logs/rollingrandomaccessfile.log"
filePattern="archive/logs/rollingrandomaccessfile.log.%d{yyyy-MM-dd-hh-mm}.gz">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="1 KB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<AsyncLogger>
<AppenderRef ref="Rolling-Random-Access-File-Appender"/>
</AsyncLogger>
<AsyncRoot level="info">
<AppenderRef ref="Rolling-Random-Access-File-Appender"/>
</AsyncRoot>
</Loggers>
</Configuration>
TcpSocketServerРеализация в приложении прослушивателя
package com.springReceiver.receiveFromSocket;
import org.apache.logging.log4j.core.net.server.ObjectInputStreamLogEventBridge;
import org.apache.logging.log4j.core.net.server.TcpSocketServer;
import java.io.IOException;
import java.io.ObjectInputStream;
class Receiver {
void writeLogs(){
TcpSocketServer<ObjectInputStream> server = null;
try {
server = new TcpSocketServer<>(9600,new ObjectInputStreamLogEventBridge());
server.run();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}