Witam,

potrzebuje napisać program, który umożliwi mi wysłanie wiadomości e-mail do użytkownika w przypadku, gdy wystąpi określony błąd. Mail ma być wysyłany tylko w przypadku, gdy nie będzie to ERROR INFO WARNING... Stworzyłam swój własny level błędu korzystając z tych instrukcji:
http://jaikiran.wordpress.com/2006/07/12/create-your-own-logging-level-in-log4j/

Następnie w pliku konfiguracyjnym xml utworzyłam nowy appender:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>

<appender class="org.apache.log4j.FileAppender" name="FILE">
<param name="File" value="D:/log.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p 
[%c] %m%n" />
</layout>

</appender>

<appender class="org.apache.log4j.net.SMTPAppender" name="MAIL">
<param value="100" name="BufferSize" />
<param value="domena" name="From" />
<param value="host" name="SMTPHost" />
<param value="Error Alert - Integrator" name="Subject" />
<param value="MY_TRACE" name="Threshold" />
<param value="maill" name="to" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p 
[%c] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="MY_TRACE" />
</filter>
</appender>

<appender class="org.apache.log4j.ConsoleAppender" name="O">
<param value="ERROR" name="Threshold" />
<param value="INFO" name="Threshold" />
<layout class="org.apache.log4j.PatternLayout">
<param value="[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - 
%m%n"
name="ConversionPattern" />
</layout>
</appender>
<appender class="org.apache.log4j.RollingFileAppender" name="R">
<param value="UTF-8" name="Encoding" />
<param value="D:\\Magento\\info-log.txt" name="File" />
<param value="100" name="MaxBackupIndex" />
<param value="100KB" name="MaxFileSize" />
<param value="ERROR" name="Threshold" />
<param value="INFO" name="Threshold" />
<layout class="org.apache.log4j.PatternLayout">
<param value="[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - 
%m%n"
name="ConversionPattern" />
</layout>
</appender>

<category name="nazwa_kategorii">
<priority value="MY_TRACE" 
class="nazwa_kategorii.MyTraceLevel" />
<appender-ref ref="MAIL" />
</category>



<root>
<level value="debug" />
<appender-ref ref="MAIL" />
<appender-ref ref="FILE" />
<appender-ref ref="R" />
<appender-ref ref="O" />
</root>
</log4j:configuration>

Następnie stworzyłam klasę żeby przetestować informowanie o błędach:

import org.apache.log4j.Appender;
import org.apache.log4j.Category;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;

import com.sun.xml.bind.v2.runtime.RuntimeUtil.ToStringAdapter;

import tools.Tools;

public class LogClass {
private final static  Logger loger = 
Logger.getLogger(LogClass.class.getName());

public static void main(String[] args) {
Tools.setProjectName("projekt");
Tools.setLog4jConfigure();
loger.getAppender("MAIL");
loger.log(MyTraceLevel.MY_TRACE, "message");

Niestety po uruchomieniu maile nie są wysyłane. Błędy zapisują się do pliku podanego w appenderze "FILE". W momencie, w którym usunę "FILE" Otrzymuję błąd log4j:ERROR No appender named [FILE] could be found. tymczasem wykorzystuję appendera "MAIL". Nie wiem, w którym miejscu kodu mam błąd, ale zamiast "MAIL" jest wykorzystywany "FILE". Jak poprawić kod żeby wiadomość była wysyłana na maila a nie zapisywana do pliku?