logging - WebSphere how to log timing traces to separate log? -


we lot of trace logging in our websphere application , separate timing information in separate log file.

usually import:

import java.util.logging.level; import java.util.logging.logger; 

and declare:

 private static final logger logger = logger.getlogger(myclass.class.getname());  

and log:

 logger.info("now logging..."); 

what simplest way of doing that?

you can use apache logging services create logs outside websphere application server. download log4j jar here. stable version of jar have used. add jar application build path/class path/libraries. add log4j.properties file under src folder (empty package). log4j.properties contain following lines:

log4j.rootlogger = debug, fileout log4j.appender.fileout = com.logging.newlogforeachrunfileappender log4j.appender.fileout.layout.conversionpattern = %d{dd-mm-yyyy} %d{absolute} %5p %c:%l - %m%n log4j.appender.fileout.layout = org.apache.log4j.patternlayout log4j.appender.fileout.file = e:/logs/myapplication/logs.log 

you can change log level per environment instead of debug(production should use info or error). add class newlogforeachrunfileappender in com.logging package following code.

package com.logging;  import java.io.file; import java.io.ioexception; import java.text.dateformat; import java.text.simpledateformat; import java.util.calendar; import org.apache.log4j.fileappender; import org.apache.log4j.layout; import org.apache.log4j.spi.errorcode;  /**  * customized log4j appender, create new line every  * run of application.  */ public class newlogforeachrunfileappender extends fileappender {      public newlogforeachrunfileappender() {     }      public newlogforeachrunfileappender(layout layout, string filename,             boolean append, boolean bufferedio, int buffersize)             throws ioexception {         super(layout, filename, append, bufferedio, buffersize);     }      public newlogforeachrunfileappender(layout layout, string filename,             boolean append) throws ioexception {         super(layout, filename, append);     }      public newlogforeachrunfileappender(layout layout, string filename)             throws ioexception {         super(layout, filename);     }      public void activateoptions() {         if (filename != null) {             try {                 filename = getnewlogfilename();                 setfile(filename, fileappend, bufferedio, buffersize);             } catch (exception e) {                 errorhandler.error("error while activating log options", e,                         errorcode.file_open_failure);             }         }     }      public string getnewlogfilename() {         if (filename != null) {             final string dot = ".";             final string hiphen = "-";             final file logfile = new file(filename);             final string filename = logfile.getname();             string newfilename = "";              final int dotindex = filename.indexof(dot);             if (dotindex != -1) {                 // file name has extension. so, insert time stamp                 // between file name , extension                 newfilename = filename.substring(0, dotindex) + hiphen                         + getdate(system.currenttimemillis(), "yyyymmdd") + dot                         + filename.substring(dotindex + 1);             } else {                 // file name has no extension. so, append timestamp                 // @ end.                 newfilename = filename + hiphen                         + getdate(system.currenttimemillis(), "yyyymmdd");             }             return logfile.getparent() + file.separator + newfilename;         }         return null;     }      public static string getdate(long milliseconds, string dateformat) {         // create dateformatter object displaying date in specified         // format.         dateformat formatter = new simpledateformat(dateformat);          // create calendar object convert date , time value in         // milliseconds date.         calendar calendar = calendar.getinstance();         calendar.settimeinmillis(milliseconds);         return formatter.format(calendar.gettime());     } } 

then class (e.g., myclass) in want logging should contain code this:

   package com.hpcl.cel;  import org.apache.log4j.logger;  public class myclass {     private static final logger logger = logger.getlogger(myclass.class);      public void showlogging() {         logger.info("operation started");          logger.info("operation finished");     }  } 

now build , run application. once call showlogging() method of myclass, create log file name

logs-20160107.txt

at path

e:/logs/myapplication

sample logs be:

07-01-2016 08:58:53,189 debug operation started  07-01-2016 08:58:53,190 debug operation finished 

Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -