i am getting java.lang.NoClassDefFoundError: org/apache/log4j/Logger and javax.servlet.ServletException: Error instantiating servlet class Sample exceptions when trying to execute. this is my code.............. public class Sample extends HttpServlet {
private static Logger logger= Logger.getLogger("Sample.class"); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub PrintWriter out =response.getWriter(); out.println(" hello sujitha"); try { logger.info("info level"); } finally { } }
Have a look at the following link:
Log4j webapplication - servlet,log4j.xml
// Program by Nishanth Thomas â?? Insolutions Global Bangalore // example class file package com.logs; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.xml.DOMConfigurator; public class Logscollected { static Logger log = Logger.getLogger(Logscollected.class); public static void logscollection(Exception e, HttpServletRequest request) throws IOException{ HttpSession session = request.getSession(); String exceptiondetail = â??â?? ; //create a folder in your application config and place log4j.xml file there and // get path by the following; String strPath = request.getRealPath("config"); DOMConfigurator.configure(strPath+"/"+"log4jexp.xml"); //create log4j.xml file as give name like shown above log4jexp; try{ //// /* Get the Stack Trace messages ////// e = ((e==null)?((Exception)request.getAttribute("Exception")):e); StackTraceElement stem[]=e.getStackTrace(); for(int i=0;i<stem.length;i++){ if (!exceptiondetail.equals("")) exceptiondetail += "\n"; exceptiondetail += "\t"; exceptiondetail=exceptiondetail+stem[i].toString(); } log.debug(exceptiondetail); //log.info(e); // log.warn("Here is some WARN"); // log.info(object); log.error(e); // log.fatal("Here is some FATAL"); }catch(Exception e1){ e1.printStackTrace(); } }
}
In the catch of any servlet call that function like this
try{ // Some code���� } catch(Exception e) { // Logs collection log 4j------------------------ Logscollected.logscollection(e,request); //---------------------------
}
Finally log4j config file
Lo4j.xml here we renamed to log4jexp.xml to avoid conflicts with server log4j.xml file palce log4jexp.xml in config folder ( here I used)
<--configure path according to your requrmts to save log file -->
<!--code between <log4j:configuration> </log4j:configuration> --> <appender name="daoAppender" class="org.apache.log4j.RollingFileAppender"> <param name="maxFileSize" value="100KB" /> <param name="maxBackupIndex" value="2" /> <param name="File" value="${jboss.server.home.dir}/deploy/myexampleprj.war/serverlogs/serverlogs.txt" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{dd-MMM-yyyy HH:mm};%5p %c %m%n" /> </layout> </appender> <--configure path according for diff packge to your requrmts to save log file --> <!--appender name="appAppender" class="org.apache.log4j.RollingFileAppender"> <param name="maxFileSize" value="100KB" /> <param name="maxBackupIndex" value="2" /> <param name="File" value="${jboss.server.home.dir}/deploy/myexampleprj.war/serverlogs/serverlogs.txt" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}: %m%n " /> </layout> </appender--> <!â??package name given in category here com is the package give package name --> <!--category name="com.ex.actions"> <priority value="DEBUG"/> <appender-ref ref="appAppender"/> </category-->
<category name="com"> <priority value="DEBUG"/> <appender-ref ref="daoAppender"/> </category> <root> <!-- <appender-ref ref="appAppender" /> <appender-ref ref="daoAppender" /> --> </root>
Ads