/* This file is part of OpenMyEWB. OpenMyEWB is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenMyEWB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenMyEWB. If not, see <http://www.gnu.org/licenses/>. OpenMyEWB is Copyright 2005-2009 Nicolas Kruchten (nicolas@kruchten.com), Francis Kung, Engineers Without Borders Canada, Michael Trauttmansdorff, Jon Fishbein, David Kadish */ package ca.myewb.frame.servlet; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.FileAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.SimpleLayout; import org.apache.log4j.net.SMTPAppender; import org.apache.velocity.app.Velocity; import org.hibernate.HibernateException; import ca.myewb.frame.HibernateUtil; import ca.myewb.frame.Helpers; import ca.myewb.frame.SMTPLogFilter; import ca.myewb.frame.SessionListener; import ca.myewb.frame.WarnLogFilter; public class InitServlet extends HttpServlet { public void init() { // Prepare for logging Logger log = Logger.getLogger(this.getClass()); Logger rootLog = Logger.getLogger("ca.myewb"); log.info("--------------"); log.info("reloading app"); Helpers.setLocalRoot(this.getServletContext().getRealPath("/")); SessionListener.doInit(getServletContext()); Properties appProperties = new Properties(); try { java.net.URL url = Thread.currentThread().getContextClassLoader().getResource("app.properties"); InputStream stream = url.openStream(); appProperties.load(stream); } catch (IOException e1) { log.error("could not load app.properties!"); } Helpers.setPrefixes(appProperties.getProperty("appprefix"), appProperties.getProperty("defaulturl"), appProperties.getProperty("domain")); Helpers.setEnShortName(appProperties.getProperty("enshortname")); Helpers.setFrShortName(appProperties.getProperty("frshortname")); Helpers.setLongName(appProperties.getProperty("longname")); Helpers.setSystemEmail(appProperties.getProperty("systememail")); Helpers.setDevMode(appProperties.getProperty("devmode").equals("yes")); String dbSuffix = appProperties.getProperty("dbsuffix"); try { HibernateUtil.createFactory(dbSuffix); log.debug("hibernate sessionFactory created (using " + dbSuffix + " db)"); } catch (HibernateException e) { log.fatal("Could not create hibernate session Factory!"); } if (appProperties.getProperty("txtlog").equals("yes")) { try { rootLog.addAppender(new FileAppender(new SimpleLayout(), this.getServletConfig() .getServletContext() .getRealPath("logs/app.log.txt"), true)); log.debug("txt logging enabled"); } catch (IOException e) { log.fatal("Could not create text Appender!"); } } else { log.debug("txt logging disabled"); } if (appProperties.getProperty("smtplog").equals("yes")) { try { SMTPAppender smtp = new SMTPAppender(); smtp.setFrom(Helpers.getSystemEmail()); smtp.setTo(appProperties.getProperty("systememail")); smtp.setSMTPHost(appProperties.getProperty("smtphost")); smtp.setSubject(Helpers.getLongName() + " error report"); smtp.setLayout(new PatternLayout("%d{ISO8601} - %m%n")); smtp.activateOptions(); smtp.setBufferSize(50); smtp.addFilter(new SMTPLogFilter()); rootLog.addAppender(smtp); log.debug("smtp error logging enabled"); } catch (Exception e) { log.fatal("Could not create smtp Appender!"); } try { FileAppender warnFA = new FileAppender(new PatternLayout("%n%d{ISO8601} - %m%n"), this.getServletConfig() .getServletContext() .getRealPath("logs/warnings.log.txt"), true); warnFA.setThreshold(Level.WARN); warnFA.addFilter(new WarnLogFilter()); rootLog.addAppender(warnFA); log.debug("warning text logging enabled as per smtp log settings"); } catch (IOException e) { log.fatal("Could not create text Appender!"); } } else { log.debug("smtp logging disabled"); } try { Properties props = new Properties(); props.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.SimpleLog4JLogSystem"); props.setProperty("runtime.log.logsystem.log4j.category", "ca.myewb.velocity"); props.setProperty("directive.foreach.counter.initial.value", "0"); props.setProperty("resource.manager.logwhenfound", "false"); props.setProperty("file.resource.loader.path", this.getServletContext().getRealPath("/tmpl/")); props.setProperty("file.resource.loader.cache", "true"); props.setProperty("file.resource.loader.modificationCheckInterval", "5"); props.setProperty(Velocity.RUNTIME_LOG, this.getServletContext().getRealPath("logs/velocity.log.txt")); Velocity.init(props); log.debug("velocity initialized"); } catch (Exception e) { log.fatal("Could not initialize Velocity!"); } log.debug("system initialized!"); } public void doGet(HttpServletRequest req, HttpServletResponse res) { } }