I just found everything that was missing by working through the log4j-dev
and log4j-user mailing list. So here is my conclusion as a simple example:

My main calling class:

<class Log4jEmailTest>

        import org.apache.log4j.Appender;
        import org.apache.log4j.net.SMTPAppender;
        import org.apache.log4j.Category;
        import org.apache.log4j.BasicConfigurator;
        import org.apache.log4j.PropertyConfigurator;
        import java.util.Enumeration;
        import java.io.File;
        import TriggerAfterXLogEvents;

        public class Log4jEmailTest
        {
          public static Category CAT =
org.apache.log4j.Category.getInstance(Log4jEmailTest.class.getName());

          public static void main(String[] args)
          {
            String fileName = "c:/tmp/log4j.config";
            File checkFile = new File(fileName);
            if (fileName != null && new File(fileName).exists())
            {
              PropertyConfigurator.configure(fileName);
              CAT.error("File "+checkFile.getName()+" found!");
            }
            else
            {
                CAT.debug(" file or fileName is missing");
            }

            for (int i=0;i<15;i++)
            {
              CAT.error("Test error, error, test, test, fatal error i = "+i);
            }
          }
        }
</class Log4jEmailTest>


My log4j configuration:

<configuration file>
        #------------------------------------------root
category-----------------------

        # Set root category priority to DEBUG and its appenders to sysout.

        log4j.rootCategory=DEBUG, sysout, SMTPTest

        # sysout is set to be a FileAppender which outputs to System.out
         log4j.appender.sysout=org.apache.log4j.ConsoleAppender

        # the following line only if all the logging should to System.out as well
        #log4j.appender.sysout.File=System.out



        # sysout also uses PatternLayout.
        log4j.appender.sysout.layout=org.apache.log4j.PatternLayout
        log4j.appender.sysout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

        #------------------------------------------SMTP appender-------------------

        # SMTP appender
        #log4j.appender.SMTPTest=org.apache.log4j.net.SMTPAppender

        # SMTPAppender layout settings
        log4j.appender.SMTPTest.layout=org.apache.log4j.PatternLayout
        log4j.appender.SMTPTest.layout.ConversionPattern=%d %-4r [%t] %-5p (%c:%L)
%x - %m%n

        # SMTPAppender email settings
        [EMAIL PROTECTED]
        log4j.appender.SMTPTest.SMTPHost=192.168.1.21
        log4j.appender.SMTPTest.Subject=SMTPappender-Test
        [EMAIL PROTECTED]
        log4j.appender.SMTPTest.BufferSize=5
        log4j.appender.SMTPTest.EvaluatorClass=TriggerAfter1LogEvents
</configuration file>


and my class TriggerAfterXLogEvents. Otherwise you would get for every
logging event one mail.

<TriggerAfterXLogEvents>
        import org.apache.log4j.spi.TriggeringEventEvaluator;
        import org.apache.log4j.spi.LoggingEvent;

        public class TriggerAfterXLogEvents implements TriggeringEventEvaluator {
          private int count;
          public TriggerAfterXLogEvents() {
            count = 0;
          }
          public boolean isTriggeringEvent(LoggingEvent event) {
            if (count >= 5) // <- put your required amount of logging events here
            {
              count = 0;
              return true;
            }
            else {
              count++;
              return false;
            }
          }
        }
</TriggerAfterXLogEvents>

As you can see, I set the count >=5. Of course you can configure this as you
like it. So now you get one mail every fifth ERROR of FATAL error event.

Cheers,
Thomas

P.S.: Don't forget the include the required JavaMail API & the JavaBeans
Activation Framework in you classpath.

-----Original Message-----
From: Fuerst, Thomas (web.de) [mailto:[EMAIL PROTECTED]]
Sent: Thursday, June 21, 2001 4:02 PM
To: LOG4J Users Mailing List
Subject: RE: settings for SMTPAppender in a config file


Hi Sven,
thank you for your quick response. I just found out how to set these missing
settings, but there is still something missing. I don't get any Mails so
far. I think log4j wants me to define a certain trigger. I already found out
that there is a class LoggingEvent which somehow can be check by using the
method:
        public boolean isTriggeringEvent(LoggingEvent event)
of the TriggeringEventEvaluator interface. I still don't know how to use
this triggering.

I don't get it. How does it work.

Thomas

-----Original Message-----
From: Scheil, Sven [mailto:[EMAIL PROTECTED]]
Sent: Thursday, June 21, 2001 3:44 PM
To: 'LOG4J Users Mailing List'
Subject: AW: settings for SMTPAppender in a config file


Hi Thomas,

hier ist mein config file für den SMTPAppender:

log4j.appender.A3=org.apache.log4j.net.SMTPAppender
[EMAIL PROTECTED]
[EMAIL PROTECTED]
log4j.appender.A3.Subject=EVA Fehler
log4j.appender.A3.SMTPHost=1.2.3.123
log4j.appender.A3.BufferSize=5

Gruß
Sven

> -----Ursprüngliche Nachricht-----
> Von: Fuerst, Thomas (web.de) [mailto:[EMAIL PROTECTED]]
> Gesendet am: Donnerstag, 21. Juni 2001 15:06
> An: 'LOG4J Users Mailing List'
> Betreff: settings for SMTPAppender in a config file
>
> Can anybody tell who to tell log4j my 'To' and my 'SMTP-Host'
> while using a
> config file.
>
> I already have these entry in my config file:
>
>       log4j.rootCategory=FATAL, SMTPTest
>
>       # SMTP appender
>       log4j.appender.SMTPTest=org.apache.log4j.net.SMTPAppender
>
>       # SMTPAppender layout settings
>
> log4j.appender.SMTPAppender.layout=org.apache.log4j.PatternLayout
>       log4j.appender.SMTPAppender.layout.ConversionPattern=%d
> %-4r [%t] %-5p
> (%c:%L) %x - %m%n
>
>       # SMTPAppender email settings
>       log4j.appender.SMTPAppender     ????
>
> and this Java code:
>
>       import org.apache.log4j.net.SMTPAppender;
>       import org.apache.log4j.Category;
>       import org.apache.log4j.BasicConfigurator;
>       import org.apache.log4j.PropertyConfigurator;
>       //PropertyConfigurator
>
>       public class Log4jEmailTest
>       {
>         public static Category CAT =
> org.apache.log4j.Category.getInstance(Log4jEmailTest.class.getName());
>
>         public static void main(String[] args)
>         {
>           PropertyConfigurator.configure("c:/tmp/log4j.config");
>       //    BasicConfigurator.configure();
>           SMTPAppender emailAppender = new SMTPAppender();
>           emailAppender.setSMTPHost("192.168.1.21");
>
> emailAppender.setTo("[EMAIL PROTECTED],thomasfuerst@
> web.de");
>           emailAppender.setFrom("[EMAIL PROTECTED]");
>           CAT.addAppender(emailAppender);
>           CAT.fatal("Test error, error, test, test, fatal error");
>           //CAT.error("Test error, error, test, test, fatal error");
>           CAT.debug("Test error, error, test, test, fatal error");
>         }
>       }
>
> So how can I configure my 'To' & 'SMTP        host?
>
> Thomas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to