[log4j V1.2.8] "Connection refused" bei "getLogger"

vfl_freak

Premium-User
Hallo zuammen,

ich hab mal eine Frage zu log4j.
In einem größeren Projekt, dass ich hier vor geraumer Zeit übernommen, wird zu Beginn der Hauptklasse "mainApp" ein Logger deklariert

Java:
final Logger log4 = Logger.getLogger( mainApp.class );

Bei jedem Programmstart wirft mir das Programm dann eine Exception:

Java:
log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.
java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:520)
    at java.net.Socket.connect(Socket.java:470)
    at java.net.Socket.<init>(Socket.java:367)
    at java.net.Socket.<init>(Socket.java:209)
    at org.apache.log4j.net.SocketAppender.connect(SocketAppender.java:195)
    at org.apache.log4j.net.SocketAppender.activateOptions(SocketAppender.java:152)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:123)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:87)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:645)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:603)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:500)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:406)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:432)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:460)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
    at org.apache.log4j.Logger.getLogger(Logger.java:94)
    at worker.mainApp.<init>(mainApp.java:42)
    at worker.mainApp.main(mainApp.java:128)
mit Verweis auf die Zeile 42 - eben die o. g. Deklaration!

Von meinem Vorgänger habe nur den lapidaren Hinweis bekommen: "ist halt so, einfach ignorieren" ....
Ok, das loggen selbst scheint auch problemlos zu klappen, allerdings nervt mich (und mittlerweile auch meinen Chef) die Meldung doch gewaltig!

Was läuft hier falsch?
Der Eintrag ist doch genauso, wie in div. Hilfen resp. Webseiten .....

Danke im voraus!
Gruß
Klaus
 
Schau mal wo dein log4j initialisiert wird. Dies geschieht normalerweise über einen Configurator. Zu log4j gehört meistens eine externe Konfigurationsdatei. Die kann man so einstellen, dass sie verschiedene Appender hat. In deiner wird dort wohl auch ein Server eingestellt sein. Und wenn der nicht gestartet ist, meckert log4j natürlich.
 
Hallo,

was hast du denn für Appender? Ist da einer bei, der eine bestimmte Connection aufbauen könnte? Evtl. ein Appender, der nicht "nur" in eine Textdatei auf dem Rechner loggt!?

Gruß
Gerrit
 
Moin,

erstmal Danke für schnellen Antworten ;-)
Ich denke, Ihr meint meine .properties-Datei, richtig?

Die ist recht kurz und sieht so aus:
Code:
#Log4j-Configuration, do not modify 

log4j.rootCategory= DEBUG, File

#############################
# Dateiwechsel um Mitternacht
#############################
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.file=./WEBCAM_FTP.log
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d %-4r %-5p [%t] %c (%L) %x - %m%n
log4j.appender.File.append=true
log4j.appender.File.Threshold=INFO

#log4j.appender.File.MaxBackupIndex=0
#log4j.appender.File.MaxFileSize=300MB

Ach .... jetzt kommt es so langsam ... er stört sich an dieser Zeile, gell :
Code:
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender

Wie kann ich das denn anders eintragen?

gruß
Klaus
 
Achnee, das ist ja das verwendete Paketverzeichnis .....

Mein Eintrag im Erstellungspfad:
Code:
/developing/java/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar

Lage des genannten DIRs:
Code:
/developing/java/jakarta-log4j-1.2.8/dist/org/apache/log4j

Und das wird ja auch wohl erkannt, sonst würde der "DailyRollingFileAppender" ja wohl nicht funktionieren

BTW: hier die verwendeten Imports

Code:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggerRepository;

Gruß
Klaus
 
Zuletzt bearbeitet:
Am FileAppender wirds nicht liegen. Das ist ja nur ne Datei und kein Server.

Hmm dann such mal ob irgendwo im Code ein Appender hinzugefügt wird.
Category.addAppender(Appender newAppender) oder BasicConfigurator.configure(Appender appender)
 
Hmm, nein, kein "addAppender" und auch kein "configure" zu finden.

Hab' allerdings auch mal nur mit "Appender" gesucht und dabei im Verzeichnis "/src" eine weitere .properties-Datei gefunden:
Code:
#Log4j-Configuration, do not modify 

log4j.rootCategory= DEBUG, File, NET, Ganymede

#############################
# Dateiwechsel um Mitternacht
#############################
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.file=WORKERCLIENT.log
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d %-4r %-5p [%t] %c (%L) %x - %m%n
log4j.appender.File.append=true

#log4j.appender.File.MaxBackupIndex=0
#log4j.appender.File.MaxFileSize=300MB
log4j.appender.File.Threshold=ERROR

log4j.appender.NET=org.apache.log4j.net.SocketHubAppender
log4j.appender.NET.Port=13500

log4j.appender.Ganymede=org.apache.log4j.net.SocketAppender
log4j.appender.Ganymede.remoteHost=localhost
log4j.appender.Ganymede.port=4445
log4j.appender.Ganymede.locationInfo=true

".NET" ist wohl irgendeine Network/HTTP-Komponente, die mitcompiliert wird.
"Ganymede" sagt mir nix und ist so auch nicht zu finden!

Ich werde die Dateien mal austauschen und schauen, ob es an letzterem lag ...

Gruß
Klaus
 
Es sind verschiedene Appender definiert worden:
Code:
log4j.rootCategory= DEBUG, File, NET, Ganymede

Über diese Namen werden unten die Einstellung vorgenommen:
Code:
log4j.appender.NET=org.apache.log4j.net.SocketHubAppender
log4j.appender.NET.Port=13500

log4j.appender.Ganymede=org.apache.log4j.net.SocketAppender
log4j.appender.Ganymede.remoteHost=localhost
log4j.appender.Ganymede.port=4445
log4j.appender.Ganymede.locationInfo=true

Der Appender NET und Ganymede versuchen sich zu einem Port zu verbinden.

Lass sie oben einfach weg:
Code:
log4j.rootCategory= DEBUG, File
 
Hallo zeja,
super - Danke! :)
Genau das hatte ich gesucht .....

Noch kurz eine grundsätzliche Frage (da ich mich mit Java immer noch als Anfänger fühle) :
die von mir angepasste Datei liegt im Pfad ".../src" und war hier auch SVN-verwaltet. Von daher gehe ich davon aus, dass es auch die einzig relevante ist!
Ich habe aber hier im System noch einige weitere Versionen gefunden, u. a. auch in den Pfaden ".../classes" und ".../build"!

Wird die Version aus ".../src" eigentlich quasi mit compiliert, oder wie schaut das genau aus?
Ich gehe jetzt mal davon aus - da wir die Anwendung hier im Haus über einen Webserver und WebStart 'verteilen' - dass weder auf dem Webserver noch auf den einzelnen Client-PCs eine Version liegen muss, oder?

Sind die anderen beiden letztlich überflüssig?

Danke und Gruß
Klaus

[EDIT] Ah, noch eine Erleuchtung :) in ".../classes" wird geschrieben, wenn ich die Datei im JBuilder editiere und in ".../build" beim Complieren ...
 
Zuletzt bearbeitet:
Zurück