package com.westudio.java.util;

import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Log {

    private static AtomicReference<Logger> logger_ =
            new AtomicReference<>(Logger.getGlobal());
    private static ThreadLocal<String> suffix_ = new ThreadLocal<>();

    static {
        Logger.getGlobal().setLevel(Level.INFO);
    }

    public static Logger getAndSet(Logger logger) {
        return logger_.getAndSet(logger);
    }

    public static String getSuffix() {
        return suffix_.get();
    }

    public static void setSuffix(String suffix) {
        suffix_.set(suffix);
    }

    public static void log(Level l, StackTraceElement source, String s, Throwable t) {

    }
}

@@ -272,16 +272,17 @@
 bal());%0A
+%0A
     priv
@@ -340,24 +340,93 @@
 Local%3C%3E();%0A%0A
+    private static ThreadLocal%3CThrowable%3E t_ = new ThreadLocal%3C%3E();%0A%0A
     static %7B
@@ -767,52 +767,1290 @@
 tic 
-void log(Level l, StackTraceElement source, 
+Throwable getThrowable() %7B%0A        return t_.get();%0A    %7D%0A%0A    public static void setThrowable(Throwable throwable) %7B%0A        t_.set(throwable);%0A    %7D%0A%0A    public static void log(Level l, StackTraceElement source, String s, Throwable t) %7B%0A        String suffix = suffix_.get();%0A        logger_.get().logp(l, source.getClassName(), source.getMethodName(),%0A                suffix == null ? s : s + suffix, t == null ? null : t);%0A    %7D%0A%0A    public static void log(Level l, String s, Throwable t) %7B%0A        log(l, new Throwable().getStackTrace()%5B2%5D, s, t);%0A    %7D%0A%0A    public static void v(String s) %7B%0A%0A    %7D%0A%0A    public static void v(Throwable t) %7B%0A%0A    %7D%0A%0A    public static void v(String s, Throwable t) %7B%0A%0A    %7D%0A%0A    public static void d(String s) %7B%0A%0A    %7D%0A%0A    public static void d(Throwable t) %7B%0A%0A    %7D%0A%0A    public static void d(String s, Throwable t) %7B%0A%0A    %7D%0A%0A    public static void i(String s) %7B%0A%0A    %7D%0A%0A    public static void i(Throwable t) %7B%0A%0A    %7D%0A%0A    public static void i(String s, Throwable t) %7B%0A%0A    %7D%0A%0A    public static void w(String s) %7B%0A%0A    %7D%0A%0A    public static void w(Throwable t) %7B%0A%0A    %7D%0A%0A    public static void w(String s, Throwable t) %7B%0A%0A    %7D%0A%0A    public static void e(String s) %7B%0A%0A    %7D%0A%0A    public static void e(Throwable t) %7B%0A%0A    %7D%0A%0A    public static void e(
 Stri

update the Log.java....