Ich habe einen Socket-Server eingerichtet, um Protokollereignisse von mehreren Computern und mehreren Webanwendungen zu empfangen. Wie kann ich den Namen des Clients (vorzugsweise in der XML-Konfiguration) abrufen, der jedes Ereignis sendet? Oder bin ich völlig unabhängig von der Best Practice für die Trennung von Protokollen in diesem Framework?Socket Server - Wie kann ich den Namen des Clients in Log4j2.xml abrufen?
Erwartetes Ergebnis: ein Socket-Server mit einem appender Log4j2 Routing, die den Client-Namen der eingehenden Protokollereignisse ab und leiten diese an die entsprechende Datei entsprechend identifizieren können.
Ergebnis Ich bekomme: Ohne den Router schreibt es alle Log-Ereignisse redundant in alle Dateien. Da ich den Router nicht kenne, werden keine Ereignisse in einer Datei protokolliert.
Modifizierte Version eines Clients config:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<Socket
name="Socket"
host="log4j-srv"
port="1234"
>
<SerializedLayout />
</Socket>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Socket"/>
</Root>
</Loggers>
</Configuration>
Und der Server:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<Routing name="Routing">
<Routes pattern="???">
<Route>
<RollingRandomAccessFile name="Default"
fileName="example1.log"
example-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="${hostName} %d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>
</Route>
<Route key="client1">
<RollingRandomAccessFile name="Client1"
fileName="otherexample.log"
filePattern="otherexample-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="${hostName} %d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>
</Route>
</Routes>
</Routing>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Routing"/>
</Root>
</Loggers>
</Configuration>
Defne 'Name des Clients'. – EJP
@EJP wie im Hostnamen des Absenders. – Arc