Brug for hjælp til at køre en tilpasset klasse/jar til log4j i Tomcat5 på Windows (Java, NetBeans)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at gennemføre en brugerdefineret klasse skrevet til log4j og bruge den sammen med Tomcat5 på Windows. Husk nu, at tomcat5 og log4j begge er installeret og konfigureret korrekt og fungerer fint. Men at tilføje denne klasse producerer ikke de forventede resultater, hvilket er punktet for dette indlæg. Jeg opdagede denne klasse fra følgende link: http://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender#comment-749).[10]]]


Jeg skrev klassen og sætte følgende over klassedeklarationen:


package LoggingOutputStream;

import java.io.PrintStream;
import java.io.OutputStream;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;  


Så kompilerede jeg det med succes. Linket siger så at bruge klassen, skriv:


System.setErr(new PrintStream(new LoggingOutputStream(
    System.err, Logger.getLogger("outLog"), Level.ERROR)));


Her er hvad jeg skrev:


import java.io.PrintStream;
import LoggingOutputStream.LoggingOutputStream;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;

public class UseLoggingOutputStream {

  public void SetErr() {
    System.setErr(new PrintStream(new LoggingOutputStream(Logger.getLogger("outLog"), Level.ERROR)));
  }
}


En vigtig detalje er LoggingOutPutstream-konstruktøren tager 2 indgange, men forfatteren fra linket hedder det ved hjælp af 3 indgange, hvilket giver en fejl. Jeg fjernede parameteren 'System.err' og filen blev kompileret.


Jeg kaster så de to klasser og kopierede jarfilen til tomcat5/common/lib-mappen. Endelig ændrede jeg filen log4j.properties med det, der blev angivet fra linket:


log4j.logger.outLog=error, out\_log

log4j.appender.out\_log=org.apache.log4j.RollingFileAppender
log4j.appender.out\_log.file=/logs/error.log
log4j.appender.out\_log.MaxFileSize=10MB
log4j.appender.out\_log.threshold=error


Jeg startede tjenesten Apache Tomcat5, og jeg kunne ikke se en error.log i logfilen. Mangler jeg noget? Har nogen fået dette til at fungere med succes?


Jeg vil med venlig hilsen værdsætte nogen rådgivning. Tak skal du have.

Bedste reference


Problem: Du bruger en absolut sti /logs/error.log


Du skal finde din Tomcat-mappe. Så enkelt som følger:
log4j.appender.out\_log.file=${catalina.home}/logs/error.log

Andre referencer 1


Lidt forældet, men kan stadig være nyttigt for nogle andre :)


Jeg havde også dette problem og kunne ikke synes at finde ud af hvorfor det ikke var at skrive noget overhovedet. Jeg forsøgte endda at skrive direkte til konsollen også, men der var ikke noget output. Til sidst kiggede jeg op på PrintStream.class og fandt ud af at du måtte passere en boolean for at autoflushing bytes som dette :


System.setErr(new PrintStream(new LoggingOutputStream(Logger.getLogger("outLog"), Level.ERROR), true));


Dette fik det til at fungere for mig. Håber det hjælper!