All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.cafeduke.jreportng.LoggerUtil Maven / Gradle / Ivy

Go to download

A utility to generate HTML log structured like Javadocs for each TestNG test class

There is a newer version: 1.3.1
Show newest version
package com.github.cafeduke.jreportng;

import static com.github.cafeduke.jreportng.ReportProperties.*;

import java.io.*;
import java.util.*;
import java.util.logging.*;

/**
 * This class instantiates LoggerUtil.logger of type java.util.logging.Logger. LoggerUtil.logger
 * can be used by any test case of thread safe logging.
 * 
 * @author Raghunandan.Seshadri
 */  
public final class LoggerUtil
{
   /**
    * List of handlers that shall be added to the logger
    */
   public static List LIST_HANDLER = new ArrayList<> (); 
   
   private LoggerUtil ()
   {
      
   }
   
   /**
    * Create a logger object using the fully qualified name of the class as logger name.
    * 
    * @param testClass Class that needs logger object. 
    * @return Logger object for the the testClass. A new object is not created if one already exists with the same name.
    */
   protected static Logger getLogger (Class testClass)
   {
      String loggerName  = testClass.getName();      
      String logFileName = testClass.getName() + ".html";
      String logTitle    = testClass.getSimpleName();        
      return createLogger (loggerName, logFileName, logTitle);
   }
   
   /**
    * Create a logger with given {@code loggerName} to log details to file {@code logFilename} with HTML title {@code logTitle}.  
    * 
    * @param loggerName A logger object shall be created with this name.
    * @param logFileName The logger shall log entries to his file.
    * @param logTitle The title of the HTML log.
    * @return Logger object.
    */
   private static Logger createLogger (String loggerName, String logFileName, String logTitle)
   {
      Logger logger = Logger.getLogger (loggerName);
      setLoggerProperties (logger, logFileName, logTitle);
      return logger;
   }
   
   /**
    * Set logger properties for the {@code logger} to log in {@code logFileName}.
    * 
    * The logger is setup as follows
    * 
    *
  • If logger has handlers then its all set
  • *
  • Set log level to {@link com.github.cafeduke.jreportng.LoggerUtil LoggerUtil}
  • *
  • Create a file handler for file {@code DIR_JREPORT_TARGET_LOG/logFileName}
  • *
  • Add HtmlFormatter with {@code logTitle} to the file hander
  • *
* @param logger The logger to be setup. * @param logFileName HTML log filename. * @param logTitle The title for the HTML file. */ private static void setLoggerProperties (Logger logger, String logFileName, String logTitle) { if (logger.getHandlers() != null && logger.getHandlers().length > 0) return; logger.setUseParentHandlers(false); logger.setLevel(LOG_LEVEL); Handler handler = null; try { DIR_REPORT_LOG_HOME.mkdirs(); String logFilePath = new File (DIR_REPORT_LOG_HOME, logFileName).getAbsolutePath(); handler = new FileHandler (logFilePath); handler.setLevel(LOG_LEVEL); handler.setFormatter(new HtmlFormatter(logTitle)); } catch (IOException e) { throw new IllegalStateException ("Error setting log handler", e); } logger.addHandler(handler); LIST_HANDLER.forEach((h) -> logger.addHandler(h)); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy