📄 loggersetupservlet.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 + -