package com.dianping.pigeon.log;
import com.dianping.pigeon.util.AppUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.spi.LoggerContext;
import java.net.URL;
public class Log4j2Logger implements Logger {
private org.apache.logging.log4j.Logger LOG;
private static volatile boolean isDebugEnabled = false;
private static LoggerContext context = null;
public Log4j2Logger() {
this(Log4j2Logger.class.getName());
}
public static synchronized void init() {
if (context == null) {
String appName = AppUtils.getAppName();
System.setProperty("app.name", appName);
URL url = Log4j2Logger.class.getResource("log4j2-pigeon.xml");
LoggerContext ctx;
if (url == null) {
ctx = LogManager.getContext(false);
} else {
try {
ctx = new org.apache.logging.log4j.core.LoggerContext("Pigeon", null, url.toURI());
((org.apache.logging.log4j.core.LoggerContext) ctx).start();
} catch (Throwable t) {
String errMsg = "[" + LoggerLoader.class.getName() + "] Failed to initialize log4j2..."
+ "Please check the write permission of pigeon log dir: (" + LoggerLoader.LOG_ROOT + ").";
System.err.println(errMsg);
ctx = LogManager.getContext(false);
}
}
context = ctx;
}
}
public Log4j2Logger(String loggerName) {
if (context == null) {
init();
}
this.LOG = context.getLogger(loggerName);
}
@Override
public void debug(Object message) {
if (this.isDebugEnabled()) {
this.LOG.debug(message);
}
}
@Override
public void debug(Object message, Throwable t) {
if (this.isDebugEnabled()) {
this.LOG.debug(message, t);
}
}
@Override
public void debug(String message) {
if (this.isDebugEnabled()) {
this.LOG.debug(message);
}
}
@Override
public void debug(String message, Throwable t) {
if (this.isDebugEnabled()) {
this.LOG.debug(message, t);
}
}
@Override
public void error(Object message) {
this.LOG.error(message);
}
@Override
public void error(Object message, Throwable t) {
this.LOG.error(message, t);
}
@Override
public void error(String message) {
this.LOG.error(message);
}
@Override
public void error(String message, Throwable t) {
this.LOG.error(message, t);
}
@Override
public void fatal(Object message) {
this.LOG.fatal(message);
}
@Override
public void fatal(Object message, Throwable t) {
this.LOG.fatal(message, t);
}
@Override
public void fatal(String message) {
this.LOG.fatal(message);
}
@Override
public void fatal(String message, Throwable t) {
this.LOG.fatal(message, t);
}
@Override
public String getName() {
return this.LOG.getName();
}
@Override
public void info(Object message) {
this.LOG.info(message);
}
@Override
public void info(Object message, Throwable t) {
this.LOG.info(message, t);
}
@Override
public void info(String message) {
this.LOG.info(message);
}
@Override
public void info(String message, Throwable t) {
this.LOG.info(message, t);
}
@Override
public boolean isDebugEnabled() {
return isDebugEnabled;
}
public static void setDebugEnabled(boolean enabled) {
isDebugEnabled = enabled;
}
@Override
public boolean isErrorEnabled() {
return this.LOG.isErrorEnabled();
}
@Override
public boolean isFatalEnabled() {
return this.LOG.isFatalEnabled();
}
@Override
public boolean isInfoEnabled() {
return this.LOG.isInfoEnabled();
}
@Override
public boolean isTraceEnabled() {
return this.LOG.isTraceEnabled();
}
@Override
public boolean isWarnEnabled() {
return this.LOG.isWarnEnabled();
}
@Override
public void trace(Object message) {
this.LOG.trace(message);
}
@Override
public void trace(Object message, Throwable t) {
this.LOG.trace(message, t);
}
@Override
public void trace(String message) {
this.LOG.trace(message);
}
@Override
public void trace(String message, Throwable t) {
this.LOG.trace(message, t);
}
@Override
public void warn(Object message) {
this.LOG.warn(message);
}
@Override
public void warn(Object message, Throwable t) {
this.LOG.warn(message, t);
}
@Override
public void warn(String message) {
this.LOG.warn(message);
}
@Override
public void warn(String message, Throwable t) {
this.LOG.warn(message, t);
}
}