package io.fathom.cloud.log;
import java.io.IOException;
import java.util.List;
import com.google.common.collect.Lists;
public abstract class LogHook {
public static class Hooks {
final List<LogHook> hooks = Lists.newArrayList();
}
static final ThreadLocal<Hooks> HOOKS = new ThreadLocal<Hooks>() {
@Override
protected Hooks initialValue() {
return new Hooks();
}
};
static List<LogHook> getHooks() {
Hooks hooks = HOOKS.get();
return hooks.hooks;
}
static void addHook(LogHook hook) {
Hooks hooks = HOOKS.get();
hooks.hooks.add(hook);
}
static void removeHook(LogHook hook) {
Hooks hooks = HOOKS.get();
hooks.hooks.remove(hook);
}
public void install() {
addHook(this);
}
public void remove() {
removeHook(this);
}
public abstract void log(String loggerName, String message, List<String[]> exceptionStacks, int levelInt)
throws IOException;
}