/********************************************************************************************* * Copyright (c) 2014-2015 Software Behaviour Analysis Lab, Concordia University, Montreal, Canada * * All rights reserved. This program and the accompanying materials * are made available under the terms of Eclipse Public License v1.0 License which * accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Syed Shariyar Murtaza -- Initial design and implementation **********************************************************************************************/ package org.eclipse.tracecompass.totalads.core; import java.io.IOException; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.eclipse.tracecompass.totalads.core.Activator; import org.eclipse.tracecompass.totalads.dbms.DBMSFactory; import org.eclipse.tracecompass.totalads.exceptions.TotalADSUncaughtExceptionHandler; import org.eclipse.tracecompass.totalads.algorithms.AlgorithmFactory; import org.eclipse.tracecompass.totalads.readers.TraceTypeFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import airbrake.AirbrakeAppender; /** * Activator for the plugin, called by Eclipse * * @author <p> * Syed Shariyar Murtaza justsshary@hotmail.com * </p> * */ public class Activator implements BundleActivator { private static BundleContext context; private static Logger log; static BundleContext getContext() { return context; } /* * (non-Javadoc) * * @see * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext * ) */ @Override public void start(BundleContext bundleContext) throws Exception { Activator.context = bundleContext; init(); } /* * (non-Javadoc) * * @see * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext bundleContext) throws Exception { Activator.context = null; deInitialize(); } /** * * Initializes TotalADS * */ private static void init() { try { AlgorithmFactory algFactory = AlgorithmFactory.getInstance(); algFactory.initialize(); TraceTypeFactory trcTypeFactory = TraceTypeFactory.getInstance(); trcTypeFactory.initialize(); // Initialize the regular java logger // Handler handler = null; //handler = new java.util.logging.SocketHandler("localhost", 5000); //$NON-NLS-1$ //handler = new java.util.logging.FileHandler(getCurrentPath() + "totaladslog.xml"); //$NON-NLS-1$ //Logger.getLogger("").addHandler(handler); //$NON-NLS-1$ // Initialize the log4j logger log = Logger.getLogger(Activator.class.getName()); initializeLog4j(); Thread.setDefaultUncaughtExceptionHandler(new TotalADSUncaughtExceptionHandler()); } catch (Exception ex) { // capture all the exceptions here // Regular java logger // Logger.getLogger(Activator.class.getName()).log(Level.SEVERE, null, ex); // log4j logger log.error(ex.getMessage(), ex); } } /** * Initializes log4jProperties * @throws IOException IOException */ private static void initializeLog4j() throws IOException { ConsoleAppender console = new ConsoleAppender(); //create appender //configure the appender String PATTERN = "[%d,%p] [%c{1}.%M:%L] %m%n"; //$NON-NLS-1$ PatternLayout patternLayout=new PatternLayout(PATTERN); console.setLayout(patternLayout); console.activateOptions(); //add appender to any Logger (here is root) Logger.getRootLogger().addAppender(console); // File appender FileAppender fileAppender=new FileAppender(patternLayout, "totalADS-log4j.log"); //$NON-NLS-1$ fileAppender.activateOptions(); Logger.getRootLogger().addAppender(fileAppender); AirbrakeAppender appender=new AirbrakeAppender(); appender.setApi_key("4f7d79c04de1d85410279b46efcbb0e2"); //$NON-NLS-1$ appender.setEnv("production"); //$NON-NLS-1$ appender.setEnabled(true); appender.setUrl("http://api.airbrake.io/notifier_api/v2/notices"); //$NON-NLS-1$ appender.activateOptions(); Logger.getRootLogger().addAppender(appender); } /** * DeInitializes TotalADS */ private static void deInitialize() { DBMSFactory.INSTANCE.closeConnection(); // This code deinitializes the Factory instance. It was necessary // because // if TotalADS plugin is reopened in running Eclipse, the static objects // are not // deinitialized on previous close of the plugin. AlgorithmFactory.destroyInstance(); TraceTypeFactory.destroyInstance(); } }