log4j Appender Frage

Otz

Bekanntes Mitglied
Hallo zusammen,

für ein Projekt arbeite ich mich gerade in das Thema log4j ein.
Meine Aufgabe ist es, die von einem Server der bei uns im Netzwerk steht geworfenen Logging-Nachrichten in meiner Java Anwendung zu empfangen und dort weiter zu verarbeiten.

Dazu habe ich nun kleine Verständnisfragen die ich hoffentlich hier beantwortet bekommen :)

  • Welche Art von Appender muss ich hierfür verwenden?!

    So wie ich das jetzt verstanden habe, bietet ein "SocketAppender" genau diese Funktionalität. Er sendet an einen bestimmten Port seine Nachrichten udn diese kann ich dann in meiner Anwendung empfangen. odeR?!

    oder wäre ein "syslog" appender hierfür besser geeignet?
  • Und was ist eigentlich der Sinn eines RootLoggers?!

Vielen Dank
 
Zuletzt bearbeitet:

Joose

Top Contributor
  • Welche Art von Appender muss ich hierfür verwenden?!

    So wie ich das jetzt verstanden habe, bietet ein "SocketAppender" genau diese Funktionalität. Er sendet an einen bestimmten Port seine Nachrichten udn diese kann ich dann in meiner Anwendung empfangen. odeR?!

    oder wäre ein "syslog" appender hierfür besser geeignet?
Genau deine Anwendung horcht auf einen bestimmten Port und der Server schickt seine Logs an diesen Port.

Der "SyslogAppender" ist ebenso ein "SocketAppender" schickt aber die Logs in einen bestimmten Format (siehe Dokumentation).

  • Und was ist eigentlich der Sinn eines RootLoggers?!

Du kannst eine beliebige Anzahl an Loggern definieren in deiner Anwendung.
Einer loggt nur die Datenbankzugriffe, ein andere alle UI Events.

Die Logger sind hierarchisch aufgebaut und der RootLogger ist in diesem Fall der oberste (den gibt es immer). Dieser stellt eben eine "Basiskonfiguration" zur Verfügung
 
Zuletzt bearbeitet:

Otz

Bekanntes Mitglied
ok, vielen dank. das hilft mir schonmal ein bischen weiter...

wenn ich alse dem RootLogger ein bestimmte LogLevel zuordne, dann können die anderen Logger kein "kleineres" Level auswählen oder?!

und gibt es irgendwo ein gutes beispiel in dem eine solche socket kommunikation erklärt wird?
 
Zuletzt bearbeitet:

Otz

Bekanntes Mitglied
ok, verstanden ;)

jetzt bräuchte ich nur noch ein kleines tutorial oder ein beispiel wie ich gesendete log nachrichten wieder empfangen kann. eins zum senden habe ich gefunden
 

Otz

Bekanntes Mitglied
Also, aktuell habe ich es soweit hinbekommen, dass ich auf dem Client verschiedene Log-Meldungen auslese, und diese auf dem Server auf der Console ausgebe.
Jedoch bleibt dabei immer das Programm hängen. Gibt es da ne möglichkeit, dass seperat laufen zu lassen sodass ich meine GUI noch bedienen kann?

Folgende Meldung bekomme ich dabei angezeigt:
Code:
INFO  [17:41:10.948] Listening on port 9875
INFO  [17:41:10.949] Waiting to accept a new client.


Hier mal mein Code:
Server:
Code:
	  String[] arguments = {"myPort", "src/main/resources/.../log4j.properties"};
	  SimpleSocketServer.main(arguments);

Server - log4j.properties
Code:
# Set root logger
log4j.rootLogger=info, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p [%d{HH:mm:ss.SSS}{GMT}] %m%n
log4j.appender.CONSOLE.threshold=info

Client
Code:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.net.SocketAppender;

public class Main {

	private static Logger logger = Logger.getLogger(Main.class);
	static int port = 9875;

	public static void main(String[] args) {
		try {
			// PropertyConfigurator.configure("log4j.properties");

			logger.setLevel(Level.INFO);
			logger.addAppender(new SocketAppender("localhost", port));
			
			logger.debug("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
			logger.info("IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII");
			logger.warn("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW");
			logger.error("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
			logger.fatal("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");

			System.out.println("Logged successfully !!");

		} catch (Exception e) {
			System.out.println("Failed to LOG by client : " + e.getMessage());
		}
	}
}

Client - log4j.propertes
Code:
#------------------#
# Remote appenders #
#------------------#

#The Socket Appender (log4j.properties)
log4j.rootCategory=INFO, Socket
log4j.appender.Socket=org.apache.log4j.net.SocketAppender
log4j.appender.Socket.Threshold=DEBUG
# log4j.appender.Socket.RemoteHost=192.168.31.200
log4j.appender.Socket.RemoteHost=localhost
log4j.appender.Socket.Port=9875
log4j.appender.Socket.ReconnectionDelay=5000
log4j.appender.Socket.LocationInfo=true
 

Otz

Bekanntes Mitglied
also kurzer zwischentand:

ich habe das jetzt mittlerweile soweit hinbekommen, dass ich in nem extra Thread einen SimpleSocketServer laufen habe, der von unterschiedlichen Anwendungen Log-Nachrichten empfangen kann.

Jetzt habe ich jedoch noch einen weitere Frage udn zwar ist es möglich (vieleicht durch einen bestimmten Appender) die empfangen Log-Nachrichten jeweils in einer String-Variablen zu speichern?
Also nicht wie bei einem Consolen-Appender diese auf der Console ausgeben, sondern sodass ich die Nachrichten innerhalb meines Programmcodes weiterverwenden kann!?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B log4j e-mail appender Netzwerkprogrammierung 4
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
H Log4j SocketAppender Problem Netzwerkprogrammierung 2
R Tomcat logging mit Log4j Netzwerkprogrammierung 5
J Frage zum Keystore Netzwerkprogrammierung 21
E Socket Frage Netzwerkprogrammierung 6
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
C Jetty 9 Non Blocking Handler Frage... Netzwerkprogrammierung 1
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
C Frage zu Threads & Server Netzwerkprogrammierung 4
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
M allgemeine Frage zu einem Web Service Client Netzwerkprogrammierung 2
Q Frage zur Socketprogrammierung Netzwerkprogrammierung 12
D HTTP Frage zu Login & Session ID Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D "Fileserver" Frage + Mit Java zugreifen Netzwerkprogrammierung 9
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
C Webservice Frage Netzwerkprogrammierung 2
M RMI Code Frage: Netzwerkprogrammierung 4
C Frage zur Klasse DatagramPacket Netzwerkprogrammierung 2
S Einfache Server Frage Netzwerkprogrammierung 5
xDarkSunx Kleine Frage authentifizierung Netzwerkprogrammierung 13
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
H Input-/OutputStream Frage Netzwerkprogrammierung 6
N Frage zu JNDI Netzwerkprogrammierung 2
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
X FAQ Frage - Netzwerkgrundlagen - ServerSocket und Socket Netzwerkprogrammierung 4
G Netzwerk IP Frage Netzwerkprogrammierung 4
S NanoHTTPD Server frage Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
E Einfache Frage zu servlets und netbeans 6.5 Netzwerkprogrammierung 41
N Frage/Problem mit RMI Netzwerkprogrammierung 3
Kr0e Frage zu SO_TIMEOUT Netzwerkprogrammierung 3
K SCP und die Frage: Wie geh ich damit um? Netzwerkprogrammierung 7
K Frage zum Verhalten von SocketChannel.write(.) Netzwerkprogrammierung 9
G Frage zu Serversocket-Beispiel aus der FAQ Netzwerkprogrammierung 17
A Frage zur Verschlüsselung mit CipherInputStream Netzwerkprogrammierung 7
H Frage zu RMI Netzwerkprogrammierung 4
5 Grundlegende Design-Frage zu Webservices Netzwerkprogrammierung 16
C Frage zur ipcam WVC54GC von linksys ? Netzwerkprogrammierung 1
ven000m Mittlere Wartezeit Frage Netzwerkprogrammierung 5
T Frage bei Irc Verbindung Netzwerkprogrammierung 10
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
S Serveranfrage - allgemeine Frage Netzwerkprogrammierung 2
ven000m Thread Frage Netzwerkprogrammierung 11
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
H Frage zur Performance Netzwerkprogrammierung 10
flashfactor Frage zu HTML-Response Netzwerkprogrammierung 4
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
K Frage zu Net Send Netzwerkprogrammierung 7
G Frage zu JNDI / RMI Netzwerkprogrammierung 4
A ServerSocket prinzipielle Frage Netzwerkprogrammierung 5
M generelle Frage zum Versenden Netzwerkprogrammierung 4
L Frage nach Socket Netzwerkprogrammierung 4
E frage zu streams Netzwerkprogrammierung 2
Luma Verschiedene Frage zu nem Netzwerkprog Netzwerkprogrammierung 6
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5

Ähnliche Java Themen


Oben