Avatar billede ttn- Nybegynder
21. november 2004 - 22:44 Der er 75 kommentarer og
1 løsning

Hjælp til Log4j

Hejsa

Hvad mener de, når der står:

log4j:WARN No appenders could be found for logger (FTPServer).
log4j:WARN Please initialize the log4j system properly.
Avatar billede arne_v Ekspert
21. november 2004 - 22:49 #1
At du skal initialisere log4j !
Avatar billede arne_v Ekspert
21. november 2004 - 22:51 #2
Hvis du faktisk skal bruge noget log4j output skal du lave en passende
konfiguration.

Læs evt. min artikel og logging.

Hvis du bare vil af med den besked, så prøv at sæt følgende ind først i din main:

      org.apache.log4j.BasicConfigurator.configure();
      org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO);
Avatar billede arne_v Ekspert
21. november 2004 - 22:51 #3
Avatar billede ttn- Nybegynder
21. november 2004 - 22:57 #4
har kigget din artikel igennem og er faktisk det, jeg har lavet det udfra!
Avatar billede arne_v Ekspert
21. november 2004 - 22:59 #5
Normalt vil du have enten

-Dlog4j.configuration=file:///C:/dir/log4j.properties

eller:

-Dlog4j.configuration=file:///C:/dir/log4j.xml

hvor de filer så sætter log4j op.
Avatar billede ttn- Nybegynder
21. november 2004 - 23:02 #6
Hvornår skal jeg skrive det der?
Avatar billede arne_v Ekspert
21. november 2004 - 23:06 #7
Det er en JVM parameter.

Altså:

java -Dlog4j.configuration=file:///C:/dir/log4j.properties -classpath xxx.jar;yyy.jar;zzz.jar DinKlasse
Avatar billede ttn- Nybegynder
21. november 2004 - 23:16 #8
Det får jeg en NoClassDefFound exception i "main" af.
Avatar billede arne_v Ekspert
21. november 2004 - 23:18 #9
På hvilken klasse ?

Har du huske alle jar filerne ?
Avatar billede ttn- Nybegynder
21. november 2004 - 23:20 #10
ja, jeg tilføjer den ene(?) jar-fil, der skal bruges i mit tilfælde log4j-
Avatar billede ttn- Nybegynder
21. november 2004 - 23:21 #11
log4j-1.2.9.jar!

Det er vel det?
Avatar billede ttn- Nybegynder
21. november 2004 - 23:21 #12
og på min FTPServer
Avatar billede ttn- Nybegynder
21. november 2004 - 23:24 #13
FTPServeren = klassen
Avatar billede arne_v Ekspert
21. november 2004 - 23:27 #14
Kan du copy paste hele linien og hele fejlen ind ?
Avatar billede ttn- Nybegynder
21. november 2004 - 23:37 #15
C:\ftp\ftpserver>java -Dlog4j.configuration=file:///C:/dir/log4j.properties -cla
sspath log4j-1.2.9.jar FTPServer
Exception in thread "main" java.lang.NoClassDefFoundError: FTPServer
Avatar billede arne_v Ekspert
21. november 2004 - 23:41 #16
java -Dlog4j.configuration=file:///C:/dir/log4j.properties -classpath .;log4j-1.2.9.jar FTPServer
Avatar billede ttn- Nybegynder
21. november 2004 - 23:44 #17
giver samme fejl.

Skal jeg egentlig have oprettet C:/dir/log4j.properties?
Avatar billede arne_v Ekspert
21. november 2004 - 23:45 #18
Bruger du pakker ?

----

Ja !
Avatar billede ttn- Nybegynder
21. november 2004 - 23:46 #19
bruger ikke pakker nej
Avatar billede ttn- Nybegynder
21. november 2004 - 23:47 #20
java -Dlog4j.configuration=file:///C:/ftp/ftpserver/log4j.properties -classpath .;log4j-1.2.9.jar FTPServer
Avatar billede ttn- Nybegynder
21. november 2004 - 23:47 #21
skal jeg i så fald bruge!
Avatar billede ttn- Nybegynder
21. november 2004 - 23:47 #22
men samme resultat!
Avatar billede ttn- Nybegynder
21. november 2004 - 23:51 #23
Der sker også fejl, hvis jeg bare skriver java FTPServer. Har du brug for noget programmeringskode?
Avatar billede arne_v Ekspert
21. november 2004 - 23:55 #24
Ligger FTPServer.class i det dir hvor du kører fra ?
Avatar billede arne_v Ekspert
21. november 2004 - 23:56 #25
Ellers skal det måske være:

java -Dlog4j.configuration=file:///C:/ftp/ftpserver/log4j.properties -classpath C:\ftp\ftpserver;log4j-1.2.9.jar FTPServer
Avatar billede ttn- Nybegynder
21. november 2004 - 23:56 #26
ja..!
Avatar billede arne_v Ekspert
21. november 2004 - 23:56 #27
Det er ikke en kode fejl
Avatar billede ttn- Nybegynder
21. november 2004 - 23:56 #28
Altså, alt ligger under c:/FTP/FTPSERVER
Avatar billede ttn- Nybegynder
21. november 2004 - 23:57 #29
Med din "java -Dlog4j.configuration=file:///C:/ftp/ftpserver/log4j.properties -classpath C:\ftp\ftpserver;log4j-1.2.9.jar FTPServer" siger den det samme, som i mit første indlæg.
Avatar billede ttn- Nybegynder
22. november 2004 - 00:06 #30
skal jeg bruge FileApender, hvis jeg vil have det ud i en fil?
Avatar billede arne_v Ekspert
22. november 2004 - 00:07 #31
Ja.

Eller evt. en af de mere avancerede fil appendere.
Avatar billede arne_v Ekspert
22. november 2004 - 00:08 #32
Men virker det nu ?
Avatar billede arne_v Ekspert
22. november 2004 - 00:09 #33
Til server brug er DailyRollingFileAppender ofte praktisk ...
Avatar billede ttn- Nybegynder
22. november 2004 - 00:10 #34
Dvs. at hvis jeg vil have det ud, som du siger i en properties fil der, skal jeg så lave en FileApender?
Avatar billede ttn- Nybegynder
22. november 2004 - 00:12 #35
Smutter i seng, du kan bare blive ved med at skrive!

Kommer igen i morgen :)
Avatar billede ttn- Nybegynder
22. november 2004 - 15:17 #36
nogle idé arne?
Avatar billede arne_v Ekspert
22. november 2004 - 15:31 #37
Kan du prøve at gentage 23:37:13 og poste output af en dir kommando fra samme
dir samt poste de øverste 10 linier af FTPServer.java ?
Avatar billede ttn- Nybegynder
22. november 2004 - 18:58 #38
C:\ftp\ftpserver>java -Dlog4j.configuration=file:///C:/dir/log4j.properties -classpath log4j-1.2.9.jar FTPServer

og hvad er et output af en dir kommando?!?!

import java.net.*;
import java.io.*;

import org.apache.log4j.*;

public class FTPServer {
   
    static final Logger logger = Logger.getLogger("FTPServer");
    public static void main(String[] args) throws IOException {
       
        Date date = new Date();
       
        logger.info("Start");
   
        ServerSocket ss = null;
        try {
            ss = new ServerSocket(21);
        } catch (IOException e) {
            System.err.println("Kunne ikke lytte paa port 21");
            logger.debug(e.getMessage());
        }
Avatar billede arne_v Ekspert
22. november 2004 - 19:22 #39
Hvordan kan du bruge Date uden at importere java.util ?
Avatar billede ttn- Nybegynder
22. november 2004 - 19:26 #40
har lavet min egen lille klasse ved siden af, da jeg skal have stillet det op på en bestemt måde og det skulle testes hurtigt - og kunne ikke lige hitte ud af simpledateformat :)
Avatar billede arne_v Ekspert
22. november 2004 - 19:30 #41
C:\E1>dir
Volume in drive C is ARNEPC2_C
Volume Serial Number is E09B-1D63

Directory of C:\E1

22/11/2004  19:21      <DIR>          .
22/11/2004  19:21      <DIR>          ..
22/11/2004  19:25                  231 FTPServer.java
              1 File(s)            231 bytes
              2 Dir(s)  5.913.518.080 bytes free

C:\E1>javac -classpath C:\Jakarta\log4j-1.2.8\dist\lib\log4j-1.2.8.jar FTPServer.java

C:\E1>dir
Volume in drive C is ARNEPC2_C
Volume Serial Number is E09B-1D63

Directory of C:\E1

22/11/2004  19:25      <DIR>          .
22/11/2004  19:25      <DIR>          ..
22/11/2004  19:25                  596 FTPServer.class
22/11/2004  19:25                  231 FTPServer.java
              2 File(s)            827 bytes
              2 Dir(s)  5.913.518.080 bytes free

C:\E1>java -classpath .;C:\Jakarta\log4j-1.2.8\dist\lib\log4j-1.2.8.jar FTPServe
r
log4j:WARN No appenders could be found for logger (FTPServer).
log4j:WARN Please initialize the log4j system properly.

C:\E1>java -Dlog4j.configuration=file:///C:/log4j.properties -classpath .;C:\Jakarta\log4j-1.2.8\dist\lib\log4j-1.2.8.jar FTPServer
FTPServer                      2004-11-22 19:29:39,937 INFO  hukus pokus

C:\E1>type FTPServer.java
import org.apache.log4j.*;

public class FTPServer {
    static final Logger logger = Logger.getLogger("FTPServer");
    public static void main(String[] args) throws Exception {
        logger.info("hukus pokus");
    }
}

C:\E1>type C:\log4j.properties
log4j.category.FTPServer = debug, console
log4j.appender.console.threshold = info
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-30c %d %-5p %m%n
Avatar billede arne_v Ekspert
22. november 2004 - 19:33 #42
OK

men prøv lige at kigge på ovenstående og check om dit matcher
Avatar billede ttn- Nybegynder
22. november 2004 - 19:42 #43
C:\E1>java -Dlog4j.configuration=file:///C:/log4j.properties -classpath .;C:\Jakarta\log4j-1.2.8\dist\lib\log4j-1.2.8.jar

(selvfølgelig rettet til)

her går min galt
Avatar billede ttn- Nybegynder
22. november 2004 - 19:43 #44
java -Dlog4j.configuration=file:///C:ftp/ftpserver/log4j/log4j.properties -classpath .;C:\ftp\ftpserver\log4j-1.2.9.jar FTPServer
Avatar billede ttn- Nybegynder
22. november 2004 - 19:44 #45
java -Dlog4j.configuration=file:///C:/ftp/ftpserver/log4j/log4j.properties -classpath .;C:\ftp\ftpserver\log4j-1.2.9.jar FTPServer

mente jeg selvfølgelig
Avatar billede arne_v Ekspert
22. november 2004 - 19:51 #46
Og fejlen er stadig :

Exception in thread "main" java.lang.NoClassDefFoundError: FTPServer

?

Og du fik ingen fejl da du oversatte FTPServer ?
Avatar billede ttn- Nybegynder
22. november 2004 - 19:56 #47
oversatte? Hvilken af kommandoerne var det?

og ja, samme fejl!
Avatar billede arne_v Ekspert
22. november 2004 - 19:57 #48
I mit eksempel:

C:\E1>javac -classpath C:\Jakarta\log4j-1.2.8\dist\lib\log4j-1.2.8.jar FTPServer.java

som gjorde at man gik fra:

Directory of C:\E1

22/11/2004  19:21      <DIR>          .
22/11/2004  19:21      <DIR>          ..
22/11/2004  19:25                  231 FTPServer.java
              1 File(s)            231 bytes
              2 Dir(s)  5.913.518.080 bytes free

til:

Directory of C:\E1

22/11/2004  19:25      <DIR>          .
22/11/2004  19:25      <DIR>          ..
22/11/2004  19:25                  596 FTPServer.class
22/11/2004  19:25                  231 FTPServer.java
              2 File(s)            827 bytes
              2 Dir(s)  5.913.518.080 bytes free
Avatar billede ttn- Nybegynder
22. november 2004 - 19:58 #49
sletter lige min class fil så, 2 sek. Jeg prøver igen!
Avatar billede ttn- Nybegynder
22. november 2004 - 20:00 #50
class filen oprettes fint!
Avatar billede arne_v Ekspert
22. november 2004 - 20:18 #51
Og samme fejl ?
Avatar billede ttn- Nybegynder
22. november 2004 - 20:20 #52
når jeg kører filen, ja
Avatar billede arne_v Ekspert
22. november 2004 - 20:34 #53
Og du står i det directory, hvor class filen ligger ?
Avatar billede ttn- Nybegynder
22. november 2004 - 20:37 #54
ja
Avatar billede ttn- Nybegynder
22. november 2004 - 20:48 #55
bemærkede du havde to dir i din status.

Hvad er det for nogle?
Avatar billede arne_v Ekspert
22. november 2004 - 21:26 #56
. og .. ? Det bare current dir og parent dir !
Avatar billede ttn- Nybegynder
22. november 2004 - 21:30 #57
nå ok. Kunne være, det var nogle interessante nogle.

Brug for hele kildekoden?
Avatar billede arne_v Ekspert
22. november 2004 - 21:35 #58
Jeg ville hellere se output fra en dir komamando copy pastet herind
Avatar billede ttn- Nybegynder
22. november 2004 - 22:21 #59
22-11-2004  22:13    <DIR>          .                22-11-2004  22:13    <DIR>          ..              22-11-2004  22:13            1.194 FTPServer.java  01-11-2004  21:21          352.291 log4j-1.2.9.jar                2 fil(er)          353.485 byte                      2 mappe(r)  4.097.003.520 byte ledig                                                     

(har lavet en ny mappe)
Avatar billede ttn- Nybegynder
22. november 2004 - 22:25 #60
herefter kommer der en .class fil ud af denne kommando:

javac -classpath C:\ftp\test\log4j-1.2.9.jar FTPServer.java
Avatar billede ttn- Nybegynder
22. november 2004 - 22:27 #61
java -classpath .;C:\ftp\test\log4j-1.2.9.jar FTPServer

giver den her fejl:
log4j:WARN No appenders could be found for logger (FTPServer).
log4j:WARN Please initialize the log4j system properly.
Avatar billede arne_v Ekspert
22. november 2004 - 22:33 #62
Og når du putter -D på så kan den ikke længere finde klassen ?

Mystisk !
Avatar billede ttn- Nybegynder
22. november 2004 - 22:36 #63
hmm.. hvis min jar fil ligger i samme mappe som min java fil - skal jeg så skrive alt det der hver gang?
Avatar billede ttn- Nybegynder
22. november 2004 - 22:38 #64
java -Dlog4j.configuration=file:///C:/ftp/test/log4j.properties -classpath .;C:\FTP\test\log4j-1.2.9.jar FTPServer

gav en filenotfoundexception. Skal jeg have oprettet filen i forvejen?
Avatar billede arne_v Ekspert
22. november 2004 - 22:41 #65
Ja.

C:\ftp\test\log4j.properties skal eksistere
Avatar billede arne_v Ekspert
22. november 2004 - 22:42 #66
Du kan starte med det her indhold:

log4j.category.FTPServer = debug, console
log4j.appender.console.threshold = info
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-30c %d %-5p %m%n

og så udbygge hen af vejen.
Avatar billede ttn- Nybegynder
22. november 2004 - 22:53 #67
Sådan.

NU virker den :)!

Tak! Smid et svar og få dine point(tror sgu det var mere end 15 point værd - kan man øge satsen på nogen måde?)
Avatar billede ttn- Nybegynder
22. november 2004 - 22:54 #68
Når den siger det der med INFO - hvad skal man så gøre for at køre filen og finde de fejl, der er?
Avatar billede arne_v Ekspert
22. november 2004 - 23:01 #69
Avatar billede ttn- Nybegynder
22. november 2004 - 23:05 #70
men kunne du hjælpe mig med 22:54:13
Avatar billede arne_v Ekspert
22. november 2004 - 23:06 #71
Det sidste forstår jeg ikke helt.

Du sætter en masse log kald ind i din kode:
  debug - for at masse output du kan bruge under troubleshooting
  info  - for extra information
  warning /error / fatal - for det

Pointen er så at du ved normal kørsel konfigurerer log4j til kun at udskrive
f.eks. fra warning og mere alvorligt.

Men når så du har et problem, så i stedetfor at skal ind og sætte en masse
System.out.println ind i din kode, så retter du bare i log4j config så den
udskriver fra debug og opefter.
Avatar billede arne_v Ekspert
22. november 2004 - 23:07 #72
Fejlene skal du selv finde.

Men en masse info og debug output hjælper gevaldigt med at kunne finde fejlen.
Avatar billede arne_v Ekspert
22. november 2004 - 23:13 #73
Til en FTP server kunne jeg forestille mig:

error - alle exceptions
info - high level beskrivelse af hvad der er sket (fil xxxx.dat på 12345 bytes uploaded)
debug - oplysninger om socket connect & disconnect + de rå FTP kommandoer modtaget og svar sendt
Avatar billede ttn- Nybegynder
22. november 2004 - 23:25 #74
det jeg mener, det er, at når jeg har modtaget det der "info" tingest, så går den i stå og så kan ejg ikke skrive mere.
Avatar billede arne_v Ekspert
22. november 2004 - 23:40 #75
Det forstår jeg ikke.

Kan du forklare lidt mere,

Hvis output generer dit skærm billede så drop console appenderen og brug en
file appender.
Avatar billede ttn- Nybegynder
23. november 2004 - 12:47 #76
djeg har fundet ud af det selv :)!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester