15 package com.cloudera.impala.util;
17 import java.util.Properties;
19 import org.apache.log4j.AppenderSkeleton;
20 import org.apache.log4j.Level;
21 import org.apache.log4j.Logger;
22 import org.apache.log4j.PropertyConfigurator;
23 import org.apache.log4j.spi.LoggingEvent;
26 import com.cloudera.impala.thrift.TLogLevel;
27 import com.google.common.base.Joiner;
28 import com.google.common.base.Preconditions;
45 Preconditions.checkState(!level.equals(Level.OFF));
48 if (level.equals(Level.TRACE))
return TLogLevel.VLOG_3;
49 if (level.equals(Level.ALL))
return TLogLevel.VLOG_3;
50 if (level.equals(Level.DEBUG))
return TLogLevel.VLOG;
51 if (level.equals(Level.ERROR))
return TLogLevel.ERROR;
52 if (level.equals(Level.FATAL))
return TLogLevel.FATAL;
53 if (level.equals(Level.INFO))
return TLogLevel.INFO;
54 if (level.equals(Level.WARN))
return TLogLevel.WARN;
56 throw new IllegalStateException(
"Unknown log level: " + level.toString());
60 public void append(LoggingEvent event) {
61 Level level = event.getLevel();
62 if (level.equals(Level.OFF))
return;
64 String msg = event.getRenderedMessage();
65 if (event.getThrowableInformation() != null) {
66 msg = msg +
"\nJava exception follows:\n" +
67 Joiner.on(
"\n").join(event.getThrowableStrRep());
69 int lineNumber = Integer.parseInt(event.getLocationInformation().getLineNumber());
70 String fileName = event.getLocationInformation().getFileName();
71 NativeLogger.LogToGlog(
81 case INFO:
return "INFO";
82 case WARN:
return "WARN";
83 case ERROR:
return "ERROR";
84 case FATAL:
return "FATAL";
86 case VLOG_2:
return "DEBUG";
87 case VLOG_3:
return "TRACE";
99 public static void Install(TLogLevel impalaLogLevel, TLogLevel otherLogLevel)
101 Properties properties =
new Properties();
102 properties.setProperty(
"log4j.appender.glog", GlogAppender.class.getName());
117 properties.setProperty(
"log4j.rootLogger",
119 properties.setProperty(
"log4j.appender.glog.Threshold",
"TRACE");
120 properties.setProperty(
"log4j.logger.com.cloudera.impala",
122 PropertyConfigurator.configure(properties);
123 Logger.getLogger(GlogAppender.class).info(String.format(
"Logging initialized. " +
124 "Impala: %s, All other: %s", impalaLogLevel, otherLogLevel));
void append(LoggingEvent event)
static String log4jLevelForTLogLevel(TLogLevel logLevel)
static void Install(TLogLevel impalaLogLevel, TLogLevel otherLogLevel)
TLogLevel levelToSeverity(Level level)