tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
244
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    psycotis psycotis ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Beiträge
    57
    Hi,

    ich habe ein Problem mit log4j. Und zwar schreiben 2 Logger mit jeweils unterschiedlichen FileAppender dem anderen Logger in sein File.

    Hier mal der Testcode dazu wo man das Problem sehr schön sehen kann:

    PHP-Code:

    public class ThreadTestlog4j extends Thread
    {
        private final 
    long ID CommonHelpers.getNextUniqueNumber(); // Unique Number

           // to get a unique Logger for every Class Intance
        
    private final Logger logger Logger.getLogger(this.getClass() + "." ID);
        private final 
    String name;
        private final 
    FileAppender appender = new FileAppender();

        public 
    ThreadTestlog4j(String namethrows IOException
        
    {
            
    this.name name;
            
    addApps();
        }

        public 
    void run()
        {    
            for (
    int i 0<= 20i++)
            {
                try
                {
                    
    sleep(1000);
                }
                catch (
    InterruptedException e)
                {
                    
    // TODO Auto-generated catch block
                    
    e.printStackTrace();
                }

                
    logger.error(name);
            }
        }

        private 
    void addApps() throws IOException
        
    {
            
    appender.setFile("C:\\logs\\" name ".log");
            
    appender.setAppend(false);
                    
    // set your own Layout
            
    appender.setLayout(Utils.PATTERN_LAYOUT);
            
    appender.setName(name);
            
    logger.setAdditivity(false);
            
    appender.activateOptions();
            
    logger.addAppender(appender);
        }

        public static 
    void main(String... argsthrows IOException
        
    {    
            
    ThreadTestlog4j a = new ThreadTestlog4j("aa");
            
    ThreadTestlog4j b = new ThreadTestlog4j("bb");

            
    a.start();
            
    b.start();
        }

    Einfach mal die log files anschauen die dabei herauskommen dann erkennt man schnell das Problem.

    Danke schon mal im Vorraus
     

  2. #2
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    habe zwar auch keine Ahnung warum, aber ich hatte so ein Phänomen mal als ich mit den Propertieskonfigurationsmöglichkeiten ein ähnliches Szenario hatte. Ich wechselte auf XML-Konfiguration und dann klappte es.
    Außerdem ist das Thema auch für mich sehr interessant, und wie ich einzelne Themen abonieren kann ohne zu antworten, habe ich leider immer noch nicht hier im Forum herausgefunden.

    halt mich auf dem Laufenden
    Takidoso
     

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo Takidoso,

    oben in der blauen Leiste über "Themen-Optionen" (ich meine, der dritte Eintrag) !

    gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    psycotis psycotis ist offline Mitglied Silber
    Registriert seit
    Dec 2001
    Beiträge
    57
    nach längerem hin und her habe ich erst einmal die java logging api ausprobiert. Es meister das Problem ist aber von den Möglichkeinten einfach zu simpel und erfordet zu viel eigene Implementierungen für meinen Geschmack.

    deshalb habe ich es verworfen java logging zu verwenden. Dann habe ich noch
    logback ausprobiert, den "Nachfolger" von log4j von dessen Erfinder Ceki Gülcü.

    Irgendwie finde ich es nicht so intuitiv wie log4j, meister aber die Aufgabe ebenfalls.

    Beim Debuggen habe ich herrausgefunden das logback im Gegensatz zu log4j u. a. locks bei iterieren der Appender setzt.
    Das allein kann aber nicht der Grund sein da ich auch nachdem ich diese Locks in log4j implementiert hatte das selbe seltsame Ergebnis zustande kommt.

    Soweit der Stand. Da ich langsam etwas in Zeitdruck komme werde ich wahrscheinlich auf logback umsteigen, aber falls sich noch neue Erkenntnisse ergeben werde ich es hier posten.

    Falls jemand etwas herrausfindet wäre es nett es hier zu posten.

    so long
     

  5. #5
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von vfl_freak Beitrag anzeigen
    Hallo Takidoso,

    oben in der blauen Leiste über "Themen-Optionen" (ich meine, der dritte Eintrag) !

    gruß
    Klaus
    Danke Klaus (sorry für das Offtopic)
     

Ähnliche Themen

  1. Problem mit Log4J
    Von ManuelHegemann im Forum Java Grundlagen
    Antworten: 2
    Letzter Beitrag: 01.09.10, 10:23
  2. Antworten: 8
    Letzter Beitrag: 13.02.09, 08:26
  3. Frage/Problem bei Log4J
    Von Chris2610 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 15
    Letzter Beitrag: 17.09.08, 20:20
  4. Problem mit log4j
    Von kaMii im Forum Java
    Antworten: 0
    Letzter Beitrag: 21.09.07, 11:09
  5. Threading.Sleep Problem
    Von hofchr im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 07.10.04, 14:11