|
package weblogic.logging.examples;
import java.util.Date;
import java.util.logging.ErrorManager;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/** * This class demonstrates how to send email
notifications based
* on server log events
*/
public class MailLogHandler extends Handler
{
private Session session;
private String toAddress;
public MailLogHandler(String jndiName,
String toAddr) throws NamingException {
InitialContext ctx = new InitialContext();
session = (Session)ctx.lookup(jndiName);
toAddress = toAddr;
}
public void close() {
}
public void flush() {
}
public void publish(LogRecord rec) {
// Check whether the log event can be
published
// based on the Level and Filter settings
if (!isLoggable(rec)) {
return;
}
try {
Message msg =
new MimeMessage(session);
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toAddress,
false));
msg.setSubject("Message
received with severity " + rec.getLevel());
msg.setSentDate(new Date(rec.getMillis()));
// Content is stored in a
MIME multi-part message with one body part
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(rec.getMessage());
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp);
msg.setContent(mp);
Transport.send(msg);
} catch(AddressException adex) {
reportError(adex.getMessage(),
adex,
ErrorManager.WRITE_FAILURE);
} catch(MessagingException mex) {
reportError(mex.getMessage(),
mex,
ErrorManager.WRITE_FAILURE);
}
}
}
|