explain about log4j with example ?
Please visit the following link:
In large web applications, idea to write on console using System.out.println("xx"); is not good as it's become heavy to write on console. Insteda a new concept known as 'log4j' has been introduced by java in which instead of writing on console, we can write it in any file which can be readable.
For this puspose, you need to have log4j.1.2.15jar.
program for servlet log4j configured in jboss application
// Crerated By NISHANTH THOMAS - In-Solutions 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 toplace log4j.xml file there and // get path by the following; String strPath = request.getRealPath("config"); //change log4j.xml file as give name like shown log4jexp and configure path ; DOMConfigurator.configure(strPath+"/"+"log4jexp.xml"); 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 now configuration of log4j.xml
Lo4j.xml here we renamed to log4jexp.xml to avoid conflicts with server log4j.xml file ,place 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