Hallo,
ich habe eine Webapp und wollte nun einen extra Logger (log4j) schreiben, der etwas in eine Datei loggt. Ich kenne mich damit nicht aus, habe versucht mittels einem Bsp das ich im Inet gefunden habe, es aufzuziehen. Ich denke (hoffe) so ganz daneben lieg ich nicht und es nicht ein kleiner Fehler, den ich nicht sehe.
(Natürlich ist das log4j-jar inkludiert, es geht ja auch, nur eben nicht mein zweiter Logger in die Datei.)
In die log4j.xml habe ich folgende Einträge hinzugefügt:
[XML] <appender name="EmailAppender" class="pfad.zu.meinem.package.EmailAppender">
<param name="file" value="emailSend.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
</appender>
<logger name="EmailLogger">
<level value="INFO" />
<appender-ref ref="EmailAppender" />
</logger>[/XML]
Dann habe ich den Appender geschrieben, und zwar dort wo der Pfad des Appenders in der logj4 definiert ist. Also: pfad.zu.meinem.package.EmailAppender
Die Klasse sieht so aus:
In der Klasse, in der ich diesen Logger verwenden möchte, hole ich mir den einfach so:
Ich glaube hier liegt auch das Problem. Und zwar liegt diese Klasse in einem ganz anderen Web-Projekt, sie ist per jar in mein jetziges Projekt eingebunden. Allerdings befürchte ich dass sich die Zeile oben auf die log4j.xml des dortigen Projekts bezieht, in der es keinen "EmailLogger" gibt.
Eine Fehlermeldung gibts auch nicht, es geht nur einfach nicht. ICh sehe, dass die activateOptions() zwar aufgerufen wird, aber ich kann nirgendwo die sendMail.log Datei finden. (Wo wird die überhaupt abgespeichert?)
Kann mir irgendwer helfen bitte? Vielen Dank
ich habe eine Webapp und wollte nun einen extra Logger (log4j) schreiben, der etwas in eine Datei loggt. Ich kenne mich damit nicht aus, habe versucht mittels einem Bsp das ich im Inet gefunden habe, es aufzuziehen. Ich denke (hoffe) so ganz daneben lieg ich nicht und es nicht ein kleiner Fehler, den ich nicht sehe.
(Natürlich ist das log4j-jar inkludiert, es geht ja auch, nur eben nicht mein zweiter Logger in die Datei.)
In die log4j.xml habe ich folgende Einträge hinzugefügt:
[XML] <appender name="EmailAppender" class="pfad.zu.meinem.package.EmailAppender">
<param name="file" value="emailSend.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
</appender>
<logger name="EmailLogger">
<level value="INFO" />
<appender-ref ref="EmailAppender" />
</logger>[/XML]
Dann habe ich den Appender geschrieben, und zwar dort wo der Pfad des Appenders in der logj4 definiert ist. Also: pfad.zu.meinem.package.EmailAppender
Die Klasse sieht so aus:
Java:
package pfad.zu.meinem.package;
import java.io.*;
import org.apache.log4j.FileAppender;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.spi.LoggingEvent;
public class EmailAppender extends FileAppender
{
private RandomAccessFile raFile;
/** @see org.apache.log4j.FileAppender#activateOptions() */
public void activateOptions()
{
System.out.println("In emailappender:activateOptions()");
super.activateOptions();
if( null == raFile ) {
if( null != fileName ) {
try {
raFile = new RandomAccessFile( fileName, "rw" );
} catch( FileNotFoundException ex ) { //
}
}
if( null == raFile ) {
LogLog.error( "Logdatei '" + fileName
+ "' kann nicht angelegt werden fuer '"
+ name + "'." );
}
}
}
/** @see org.apache.log4j.WriterAppender#subAppend(LoggingEvent) */
protected void subAppend( LoggingEvent event )
{
System.out.println("In emailappender:subAppend()");
// Nicht 'super.subAppend(event)' aufrufen!
if( null != raFile ) {
try {
raFile.seek( 0 );
raFile.setLength( 0 );
raFile.writeBytes( getLayout().format( event ) );
} catch( IOException ex ) {
}
}
}
}
In der Klasse, in der ich diesen Logger verwenden möchte, hole ich mir den einfach so:
Java:
private final static Logger logger = Logger
.getLogger("EmailLogger");
Ich glaube hier liegt auch das Problem. Und zwar liegt diese Klasse in einem ganz anderen Web-Projekt, sie ist per jar in mein jetziges Projekt eingebunden. Allerdings befürchte ich dass sich die Zeile oben auf die log4j.xml des dortigen Projekts bezieht, in der es keinen "EmailLogger" gibt.
Eine Fehlermeldung gibts auch nicht, es geht nur einfach nicht. ICh sehe, dass die activateOptions() zwar aufgerufen wird, aber ich kann nirgendwo die sendMail.log Datei finden. (Wo wird die überhaupt abgespeichert?)
Kann mir irgendwer helfen bitte? Vielen Dank
Zuletzt bearbeitet von einem Moderator: