1 20 21 package com.methodhead.servlet; 22 23 import java.io.FileInputStream ; 24 import java.io.InputStream ; 25 import java.io.IOException ; 26 27 import java.util.Properties ; 28 29 import javax.servlet.ServletContext ; 30 31 import javax.servlet.http.HttpServlet ; 32 import javax.servlet.http.HttpServletRequest ; 33 import javax.servlet.http.HttpServletResponse ; 34 35 import org.apache.log4j.BasicConfigurator; 36 import org.apache.log4j.Level; 37 import org.apache.log4j.PropertyConfigurator; 38 39 95 public class LoggerServlet extends HttpServlet { 96 97 99 101 103 105 public void init() { 106 String configFileParam = getInitParameter( "configFile" ); 110 String logFileParam = getInitParameter( "logFile" ); 111 String levelParam = getInitParameter( "level" ); 112 113 BasicConfigurator.resetConfiguration(); 117 118 Properties props = new Properties (); 119 props.put( 120 "log4j.appender.default", 121 "org.apache.log4j.FileAppender" ); 122 props.put( 123 "log4j.appender.default.layout", 124 "org.apache.log4j.PatternLayout" ); 125 props.put( 126 "log4j.appender.default.layout.ConversionPattern", 127 "%d %-5p %c - %m%n" ); 128 129 String file = logFileParam; 133 134 if ( logFileParam == null ) 135 file = getServletContext().getRealPath( "WEB-INF/log.txt" ); 136 137 else if ( !logFileParam.startsWith( "/" ) ) { 138 file = getServletContext().getRealPath( logFileParam ); 139 140 if ( file == null ) { 141 getServletContext().log( 142 "LoggerServlet: Couldn't get real path for " + logFileParam + 143 "; defaulting to WEB-INF/log.txt." ); 144 file = getServletContext().getRealPath( "WEB-INF/log.txt" ); 145 } 146 } 147 148 props.put( "log4j.appender.default.file", file ); 149 150 Level level = null; 154 if ( "ALL".equals( levelParam ) ) 155 level = Level.ALL; 156 else if ( "DEBUG".equals( levelParam ) ) 157 level = Level.DEBUG; 158 else if ( "ERROR".equals( levelParam ) ) 159 level = Level.ERROR; 160 else if ( "FATAL".equals( levelParam ) ) 161 level = Level.FATAL; 162 else if ( "INFO".equals( levelParam ) ) 163 level = Level.INFO; 164 else if ( "OFF".equals( levelParam ) ) 165 level = Level.OFF; 166 else if ( "WARN".equals( levelParam ) ) 167 level = Level.WARN; 168 else { 169 getServletContext().log( 170 "LoggerServlet: Unexpected level " + levelParam + 171 "; defaulting to ERROR." ); 172 level = Level.ERROR; 173 } 174 175 props.put( "log4j.rootLogger", level.toString() + ",default" ); 176 177 if ( configFileParam != null ) { 181 String configFile = configFileParam; 182 if ( !configFileParam.startsWith( "/" ) ) { 183 configFile = getServletContext().getRealPath( configFileParam ); 184 185 if ( configFile == null ) { 186 getServletContext().log( 187 "LoggerServlet: Couldn't get real path for " + configFileParam + 188 "." ); 189 } 190 } 191 192 if ( configFile != null ) { 193 try { 194 InputStream in = new FileInputStream ( configFile ); 195 props.load( in ); 196 in.close(); 197 } 198 catch ( IOException e ) { 199 getServletContext().log( 200 "LoggerServlet: Unexpected IOException " + e ); 201 } 202 } 203 } 204 205 PropertyConfigurator.configure( props ); 209 } 210 211 public void doGet( 212 HttpServletRequest req, 213 HttpServletResponse res) { 214 } 215 216 218 } 220 | Popular Tags |