⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loggersetupservlet.java

📁 我在加拿大学习的一个比较复杂的在线银行程序.
💻 JAVA
字号:
package com.ebusiness.ebank.log;/** * <p>Title: </p> * <p>Description: This servlet class is to initiate logger, and it must be loaded on startup. *                  Once the Logger has been set up, the instance of the class can be destroyed</p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: eBusiness Inc., All right reserved</p> * @author unascribed * @version 1.0 */import javax.servlet.http.HttpServlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import org.apache.log4j.PropertyConfigurator;import org.apache.log4j.Logger;import org.apache.log4j.MDC;import java.sql.DriverManager;import java.sql.Driver;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.SQLException;import javax.sql.DataSource;//import java.io.FileInputStream;import java.util.Properties;import com.ebusiness.ebank.servicedelegate.ServiceLocator;import com.ebusiness.ebank.servicedelegate.ServiceLocatorException;import com.ebusiness.ebank.exception.ErrorMessages;import com.ebusiness.ebank.util.Constants;public class LoggerSetupServlet extends HttpServlet{    public void init(ServletConfig config)          throws ServletException    {        super.init(config);        String driverName = config.getInitParameter("driverName");        //Since Logger has not been set up yet, System.err is used for displaying message        System.out.println("\nStart to set up Logger...");        System.err.println("\nStart to set up Logger...");        System.err.println("\nDriver name: " + driverName);        //Set up the Driver that Logger might be using        try        {            Driver d = (Driver)(Class.forName(driverName).newInstance());            DriverManager.registerDriver(d);            System.err.println("\nDatabase Driver has been registered with: " + driverName);        }        catch(Exception e)        {            System.err.println(e);        }        Properties prop = new Properties();        try        {            prop.load(this.getClass().getResourceAsStream("ebankLogConfig.properties"));            //prop.load(this.getServletContext().getResourceAsStream("/WEB-INF/ebankLogConfig.properties"));        }        catch (Exception e)        {            System.out.println("\nFATAL: Log config file does not found");            System.err.println(e);        }        String dbUrl = "";        String dbUserName = "";        String dbPassword = "";        Connection con = null;        try        {            DataSource ds = ServiceLocator.getInstance().getDataSource(Constants.DATASOURCE_EBANK);            con = ds.getConnection();            DatabaseMetaData metaData = con.getMetaData();            dbUrl = metaData.getURL();            dbUserName = metaData.getUserName();            System.out.println("\nINFO: Database URL: " + dbUrl);            System.out.println("\nINFO: Database User Name: " + dbUserName);        }        catch (ServiceLocatorException sle)        {            System.err.println("\nFATAL: " + ErrorMessages.FAIL_TO_LOOKUP_DATASOURCE + " for " + Constants.DATASOURCE_EBANK);        }        catch (SQLException se)        {            System.err.println("\nFATAL: " + ErrorMessages.OTHER_DATABASE_ERROR);        }        finally        {            try            {                if (con != null)                    con.close();            }            catch (SQLException se)            {                System.err.println("\nFATAL: " + ErrorMessages.FAIL_TO_CLOSE_DATABASE_CONNECTION);            }        }        //The codes below is to avoid the need to reconfigure log properties when the eBank        //application is promoted from one environment to another environment        prop.setProperty("log4j.appender.R1.url", dbUrl);        prop.setProperty("log4j.appender.R1.username", dbUserName);        prop.setProperty("log4j.appender.JDBC2.url", dbUrl);        prop.setProperty("log4j.appender.JDBC2.username", dbUserName);        if (dbUrl.equalsIgnoreCase(prop.getProperty("dev.url"))            && dbUserName.equalsIgnoreCase(prop.getProperty("dev.username"))) //Dev environment        {            prop.setProperty("log4j.logger.com.ebusiness.ebank", prop.getProperty("dev.logTarget"));            prop.setProperty("log4j.appender.R1.password", prop.getProperty("dev.password"));            prop.setProperty("log4j.appender.JDBC2.password", prop.getProperty("dev.password"));        }        else if (dbUrl.equalsIgnoreCase(prop.getProperty("qa.url"))            && dbUserName.equalsIgnoreCase(prop.getProperty("qa.username"))) //QA environment        {            prop.setProperty("log4j.logger.com.ebusiness.ebank", prop.getProperty("qa.logTarget"));            prop.setProperty("log4j.appender.R1.password", prop.getProperty("qa.password"));            prop.setProperty("log4j.appender.JDBC2.password", prop.getProperty("qa.password"));        }        else if (dbUrl.equalsIgnoreCase(prop.getProperty("uat.url"))            && dbUserName.equalsIgnoreCase(prop.getProperty("uat.username"))) //Uat environment        {            prop.setProperty("log4j.logger.com.ebusiness.ebank", prop.getProperty("uat.logTarget"));            prop.setProperty("log4j.appender.R1.password", prop.getProperty("uat.password"));            prop.setProperty("log4j.appender.JDBC2.password", prop.getProperty("uat.password"));        }        else if (dbUrl.equalsIgnoreCase(prop.getProperty("prod.url"))            && dbUserName.equalsIgnoreCase(prop.getProperty("prod.username"))) //Production environment        {            prop.setProperty("log4j.logger.com.ebusiness.ebank", prop.getProperty("prod.logTarget"));            prop.setProperty("log4j.appender.R1.password", prop.getProperty("prod.password"));            prop.setProperty("log4j.appender.JDBC2.password", prop.getProperty("prod.password"));        }        else if (dbUrl.equalsIgnoreCase(prop.getProperty("dr.url"))          && dbUserName.equalsIgnoreCase(prop.getProperty("dr.username"))) //DR environment       {          prop.setProperty("log4j.logger.com.ebusiness.ebank", prop.getProperty("dr.logTarget"));          prop.setProperty("log4j.appender.R1.password", prop.getProperty("dr.password"));          prop.setProperty("log4j.appender.JDBC2.password", prop.getProperty("dr.password"));       }        else //No database URL matchs, the Logger will not be able to successfully set up        {            System.err.println("\nFATAL: No database URL matchs the eBank connection pool URl. \nPlease reconfigure ebankLogConfig.properties or ebank connection pool URL");            return;        }        PropertyConfigurator.configure(prop);        //Now that Logger has been set up, Logger can be used to display messages        Logger log = Logger.getLogger(this.getClass());        MDC.put("userid", "system");        log.debug("This is a Logger test.");        log.info("The Logger has been successfully set up.");        //Once Logger has been configured, this servlet is no longer needed        this.destroy();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -