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

com.github.cafeduke.jreportng.LoggerFactory 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 java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.logging.Logger;

/**
 * This class provides a static factory method to create a JReport logger object.
 * 
 * 

* {@code Logger logger = LoggerFactory.getJReportLogger(MyClass.class); } * * @author Raghunandan.Seshadri */ public class LoggerFactory { /** * The factory method to get a Logger object. * * @param testClass The class object to be used to create a Logger. * @return The logger object. */ public static Logger getJReportLogger (Class testClass) { Logger logger = LoggerUtil.getLogger(testClass); JReportLogUtil.updateLogReport(testClass); return logger; } /** * Inject the Logger created for class {@code testClass} into the class {@code testClass}. * * @param testClass The class object into which the Logger needs to be inject. */ protected static void injectLogger (Class testClass) { injectLogger (getJReportLogger(testClass), testClass); } /** * Inject the given logger into the class {@code testClass}. * * @param logger The logger object to be injected. * @param testClass The class to inject the logger object. */ protected static void injectLogger (Logger logger, Class testClass) { Arrays.asList(testClass.getDeclaredFields()) .stream () .filter ((f) -> (f.getType() == Logger.class)) .filter ((f) -> f.isAnnotationPresent(JReportLogger.class)) .filter ((f) -> Modifier.isStatic(f.getModifiers())) .forEach ((f) -> setLoggerOnField(f, logger, testClass)); } protected static void setLoggerOnField (Field f, Logger logger, Class testClass) { try { f.set (null, logger); } catch (Exception e) { throw new IllegalStateException("Exception injecting logger in class " + testClass.getName(), e); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy