package uk.ac.ox.zoo.seeg.abraid.mp.common.util; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.net.SMTPAppender; import uk.ac.ox.zoo.seeg.abraid.mp.common.config.SmtpConfiguration; /** * Logging configuration utilities. * Copyright (c) 2014 University of Oxford */ public class LoggingSetupUtils { private static final PatternLayout LAYOUT = new PatternLayout("%d{ISO8601} %5p [%t] %c - %m%n"); private static final int EMAIL_BUFFER_SIZE = 10; private final String loggingContextName; private final boolean useEmailLogging; private final String emailFromAddress; private final String emailToAddress; private final SmtpConfiguration emailSmtpConfig; public LoggingSetupUtils(String loggingContextName, boolean useEmailLogging, String emailFromAddress, String emailToAddress, SmtpConfiguration emailSmtpConfig) { this.loggingContextName = loggingContextName; this.useEmailLogging = useEmailLogging; this.emailFromAddress = emailFromAddress; this.emailToAddress = emailToAddress; this.emailSmtpConfig = emailSmtpConfig; } /** * Set up additional log4j appenders. */ public void setupLogging() { if (useEmailLogging) { setupEmailLogging(); } } private void setupEmailLogging() { SMTPAppender emailAppender = new SMTPAppender(); emailAppender.setSMTPHost(emailSmtpConfig.getAddress()); emailAppender.setSMTPPort(emailSmtpConfig.getPort()); emailAppender.setSMTPUsername(emailSmtpConfig.getUsername()); emailAppender.setSMTPPassword(emailSmtpConfig.getPassword()); emailAppender.setFrom(emailFromAddress); emailAppender.setTo(emailToAddress); emailAppender.setLayout(LAYOUT); emailAppender.setBufferSize(EMAIL_BUFFER_SIZE); emailAppender.setThreshold(Level.ERROR); emailAppender.setSubject(String.format("%s Error Alert", loggingContextName)); emailAppender.activateOptions(); Logger.getRootLogger().addAppender(emailAppender); } }