Hi Ede,

What is it for ? Shall we use it ?
Will we loose the complete stacktrace in case of errors (which is 
helpful for debugging) ?

Michaël

Le 10/01/2016 13:01, jump-pilot-...@lists.sourceforge.net a écrit :
> Revision: 4750
>            http://sourceforge.net/p/jump-pilot/code/4750
> Author:   edso
> Date:     2016-01-10 12:01:41 +0000 (Sun, 10 Jan 2016)
> Log Message:
> -----------
> a generalized logger interface utilizing log4j
>
> Added Paths:
> -----------
>      core/trunk/src/com/vividsolutions/jump/workbench/Logger.java
>
> Added: core/trunk/src/com/vividsolutions/jump/workbench/Logger.java
> ===================================================================
> --- core/trunk/src/com/vividsolutions/jump/workbench/Logger.java              
>                 (rev 0)
> +++ core/trunk/src/com/vividsolutions/jump/workbench/Logger.java      
> 2016-01-10 12:01:41 UTC (rev 4750)
> @@ -0,0 +1,208 @@
> +package com.vividsolutions.jump.workbench;
> +
> +import java.io.File;
> +import java.util.ArrayList;
> +import java.util.Enumeration;
> +import java.util.List;
> +
> +import org.apache.log4j.Appender;
> +import org.apache.log4j.Category;
> +import org.apache.log4j.FileAppender;
> +import org.apache.log4j.Level;
> +
> +import com.vividsolutions.jump.I18N;
> +import com.vividsolutions.jump.workbench.ui.plugin.GenerateLogPlugIn;
> +
> +/**
> + * a generalized logger interface for OJ package usage currently based on 
> log4j
> + * v1.2
> + *
> + * @author ed
> + *
> + */
> +public class Logger {
> +
> +  public static void fatal(String msg) {
> +    log(msg, null, Level.FATAL, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void error(String msg) {
> +    log(msg, null, Level.ERROR, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void warn(String msg) {
> +    log(msg, null, Level.WARN, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void info(String msg) {
> +    log(msg, null, Level.INFO, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void debug(String msg) {
> +    log(msg, null, Level.DEBUG, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void trace(String msg) {
> +    log(msg, null, Level.TRACE, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void fatal(Throwable t) {
> +    log(null, t, Level.FATAL, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void error(Throwable t) {
> +    log(null, t, Level.ERROR, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void warn(Throwable t) {
> +    log(null, t, Level.WARN, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void info(Throwable t) {
> +    log(null, t, Level.INFO, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void debug(Throwable t) {
> +    log(null, t, Level.DEBUG, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void trace(Throwable t) {
> +    log(null, t, Level.TRACE, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void fatal(String msg, Throwable t) {
> +    log(msg, t, Level.FATAL, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void error(String msg, Throwable t) {
> +    log(msg, t, Level.ERROR, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void warn(String msg, Throwable t) {
> +    log(msg, t, Level.WARN, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void info(String msg, Throwable t) {
> +    log(msg, t, Level.INFO, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void debug(String msg, Throwable t) {
> +    log(msg, t, Level.DEBUG, new Exception().getStackTrace()[0]);
> +  }
> +
> +  public static void trace(String msg, Throwable t) {
> +    log(msg, t, Level.TRACE, new Exception().getStackTrace()[0]);
> +  }
> +
> +  /**
> +   * log msg, throwable with log level from one stack before the given
> +   * StackTraceElement code location
> +   *
> +   * @param msg
> +   * @param t
> +   * @param logLevel
> +   */
> +  public static void log(String msg, Throwable t, Level logLevel,
> +      StackTraceElement calledFrom) {
> +    // get caller
> +    StackTraceElement element = getCaller(calledFrom);
> +
> +    org.apache.log4j.Logger logger = null;
> +
> +    if (element != null) {
> +      logger = org.apache.log4j.Logger.getLogger(element.getClassName());
> +    }
> +
> +    // what's the current log level?
> +    Level loggerLevel = logger.getEffectiveLevel();
> +
> +    // only append code:line during debugging
> +    String msgAppend = "";
> +    if (element != null && !loggerLevel.isGreaterOrEqual(Level.INFO))
> +      msgAppend = " at " + element + "";
> +
> +    logger.log(logLevel, msg + msgAppend, t);
> +  }
> +
> +  private static StackTraceElement getCaller(StackTraceElement calledFrom) {
> +    if (calledFrom == null)
> +      throw new IllegalArgumentException();
> +
> +    StackTraceElement[] stack = new Exception().getStackTrace();
> +    boolean seenCaller = false;
> +    // run up the stack until we are one below the calling code (calledFrom)
> +    for (StackTraceElement element : stack) {
> +      // we saw calledFrom in the previous run, hence this must be our origin
> +      if (seenCaller)
> +        return element;
> +      seenCaller = element.equals(calledFrom);
> +    }
> +
> +    return null;
> +  }
> +
> +  /**
> +   * get current file appenders, mainly for display purposes eg. in
> +   * {@link GenerateLogPlugIn}
> +   *
> +   * @return files list
> +   */
> +  public static List<File> getLogFiles() {
> +    List files = new ArrayList<File>();
> +    Enumeration<Category> loggers = org.apache.log4j.LogManager
> +        .getCurrentLoggers();
> +    while (loggers.hasMoreElements()) {
> +      Category logger = (Category) loggers.nextElement();
> +      Enumeration<Appender> apps = logger.getAllAppenders();
> +
> +      while (apps.hasMoreElements()) {
> +        Appender app = (Appender) apps.nextElement();
> +        System.out.println(app.getName());
> +        if (app instanceof FileAppender) {
> +          // System.out.println(app);
> +          files.add(new File(((FileAppender) app).getFile()));
> +        }
> +      }
> +    }
> +
> +    return files;
> +  }
> +
> +  /**
> +   * setting current log level for the root logger
> +   *
> +   * @param levelString
> +   */
> +  public static void setLevel(String levelString) {
> +    Level level = org.apache.log4j.Level.toLevel(levelString);
> +    if (level.equals(Level.DEBUG) && !levelString.equalsIgnoreCase("debug"))
> +      throw new IllegalArgumentException("unknown log verbosity level.");
> +
> +    org.apache.log4j.Logger.getRootLogger().setLevel(level);
> +
> +    info(I18N.getMessage("setting-log-level-to-{0}", level));
> +  }
> +
> +  /**
> +   * @return the current log level for the calling class
> +   */
> +  public static Level getLevel() {
> +    // get caller
> +    StackTraceElement element = getCaller(new 
> Exception().getStackTrace()[0]);
> +    org.apache.log4j.Logger logger = 
> org.apache.log4j.Logger.getLogger(element
> +        .getClassName());
> +    return logger.getEffectiveLevel();
> +  }
> +
> +  /**
> +   * @return the lo4j logger for the calling class
> +   */
> +  public static org.apache.log4j.Logger getLogger() {
> +    // get caller
> +    StackTraceElement element = getCaller(new 
> Exception().getStackTrace()[0]);
> +    org.apache.log4j.Logger logger = 
> org.apache.log4j.Logger.getLogger(element
> +        .getClassName());
> +    return logger;
> +  }
> +
> +}
>
>
> Property changes on: 
> core/trunk/src/com/vividsolutions/jump/workbench/Logger.java
> ___________________________________________________________________
> Added: svn:mime-type
> ## -0,0 +1 ##
> +text/plain
> \ No newline at end of property
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to