Ich habe eine Web-Anwendung.Ich möchte Log-Datei dieser Web-Anwendung in Remote-Rechner mit Syslog Appender in Log4j schreiben.Die Log-Datei wird in den Syslog-Server geschrieben .Der Dateiname lautet Class.Log. Ich möchte den richtigen Protokolldateinamen angeben. Wie kann ich das tun?Wie schreibe ich separate Log-Datei in Syslog-Server in Java mit log4j
-1
A
Antwort
0
Ich habe ein funktionierendes Beispiel:
Für log4j2 nicht die Syslog
appender verwenden. Ich hatte Socket
appender auf diese Weise zu verwenden (das PatternLayout
Element simuliert das klassische Speditionsformat für Daten in dem Draht zu senden finden Sie unter: smtradfwd.c):
<Configuration status="error" strict="true" monitorInterval="30"
name="XMLConfigTest" packages="org.apache.logging.log4j.test">
<Properties>
<Property name="REMOTE_HOST">some.ip.address</Property>
<Property name="APP_NAME">rest-server</Property>
</Properties>
<Appenders>
<Socket name="REMOTE" host="${REMOTE_HOST}" port="514" protocol="TCP">
<PatternLayout pattern="<128>%d{MMM dd HH:mm:ss} ${hostName} ${APP_NAME}[${sys:PID}]: %-5level %c %M - %msg%xEx%n" />
</Socket>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="REMOTE"/>
</Root>
</Loggers>
</Configuration>
<128>
bedeutet Einrichtung LOCAL0
. Siehe: rsyslog.h. In der Leitung (und bei Verwendung des herkömmlichen Weiterleitungsformats) beginnt jede Syslog-Nachricht mit <FACILITY_NUMBER>
.
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# Dynamic file
template (name="AppFile" type="string" string="/var/log/remote/%programname%.log")
if ($fromhost-ip == 'the.remote.ip.address') then {
if ($programname == 'rest-server' and $syslogfacility-text == 'local0') then {
action(type="omfile" Sync="on" FileCreateMode="0640" DynaFile="AppFile")
& stop
}
}
Verwandte Themen
- 1. Log4J leere Zeile in Logdatei drucken
- 2. Was ist die beste Größe für eine Logdatei in LOG4J?
- 3. Wie schreibe ich den Fizzbuzz-Test mit Rekursion in Java
- 4. Log4j Protokollierungsebene in Java
- 5. Wie schreibe ich Unicode-Kreuzsymbol in Java?
- 6. Wie schreibe ich Facebook-Apps in Java?
- 7. Wie schreibe ich boolesche Anweisungen in Java
- 8. Wie schreibe ich Output Compiler in Java?
- 9. SyslogServer empfängt keine UDP-Nachrichten
- 10. Wie schreibe ich Logs in eine Datei mit Log4j und Storm Framework?
- 11. Log4J-Ausgabe in Java deaktivieren
- 12. Initialisierung und mit Log4J in Java
- 13. Wie schreibe ich JSON mit Javascript
- 14. Protokolllaufzeit Ausnahmen in Java mit log4j
- 15. Wie schreibe ich separate Ansichten für GET und POST
- 16. Wie schreibe ich Dateipfad in JSON-Datei in Java
- 17. Wie schreibe ich Text in ein Bild in Java?
- 18. Wie schreibe ich in OS-System in Java anmelden?
- 19. Wie Debuggen in Xtext mit Log4j?
- 20. Wie schreibe ich ein benutzerdefiniertes Log in Richtextbox aus einer Logdatei von externen Programm in C erstellt #
- 21. Verwenden von Log4J 1. *, wie kann ich zwei Pakete in zwei separate Dateien schreiben?
- 22. Wie schreibe ich in eine einzelne Zelle in einer CSV-Datei statt separate?
- 23. Wie schreibe ich nur INFO loggt in der Log-Datei log4j ein?
- 24. Wie schreibe ich Abschnitte einer Datei in separate Listen in Python 3.0?
- 25. Separate Stderr und Stdout Stream am CLI mit log4j Konfiguration
- 26. Wie kann ich meine BlazeDS-Implementierung mit Log4J einrichten?
- 27. Wie schreibe ich in HDFS mit Scala
- 28. Wie schreibe ich Junit Testfälle für Java-Klasse in AEM6.2
- 29. Java: Wie schreibe ich einen WSI-Server
- 30. Java separate Klasse initilization in Schleife
Sie sollten ein "Ziel" Modus in Ihrem Syslog-Server:
In Server-Seite sollte rsyslog wie diese konfiguriert werden. Dort müssen Sie den Namen der .log-Datei deklarieren. –
Danke Asier für deine Antwort.Aber hier habe ich die Datei rsyslog.conf verwendet, um den Speicherort der Protokolldatei zu konfigurieren.Hier habe ich die folgende Konfiguration verwendet: $ template RemoteLogs, "/ var/log /% HOSTNAME% /% PROGRAMNAME% .log" * *. *? RemoteLogs & ~. Der Ordner wird mit HOSTNAME erstellt, aber der Name der Protokolldatei wird als CLASS.log angezeigt. –
Hum ... was Sie versuchen scheint schwierig für den Syslog-Server, würden Sie etwas wie Logstash benötigen, um den genauen Klassennamen zu nehmen. Ein einfacher Weg, um dies zu erreichen, wenn es nicht viele Klassen gibt, würde zwei (oder so viele verschiedene Klassen, die Sie haben) Syslog-Server erstellen, jeder an einem anderen Port. Definieren Sie dann auf Ihrer Clientseite zwei verschiedene syslogApp- ders (einen für Port 1 und den anderen für Port 2). –