BELUGA BEHR created HIVE-16873:
----------------------------------
Summary: Remove Thread Cache From Logging
Key: HIVE-16873
URL: https://issues.apache.org/jira/browse/HIVE-16873
Project: Hive
Issue Type: Improvement
Components: Metastore
Reporter: BELUGA BEHR
Priority: Minor
In {{org.apache.hadoop.hive.metastore.HiveMetaStore}} we have a {{Formatter}}
class tied to every thread for logging.
{code}
public static final String AUDIT_FORMAT =
"ugi=%s\t" + // ugi
"ip=%s\t" + // remote IP
"cmd=%s\t"; // command
public static final Logger auditLog = LoggerFactory.getLogger(
HiveMetaStore.class.getName() + ".audit");
private static final ThreadLocal<Formatter> auditFormatter =
new ThreadLocal<Formatter>() {
@Override
protected Formatter initialValue() {
return new Formatter(new StringBuilder(AUDIT_FORMAT.length() * 4));
}
};
...
private static final void logAuditEvent(String cmd) {
final Formatter fmt = auditFormatter.get();
((StringBuilder) fmt.out()).setLength(0);
String address = getIPAddress();
if (address == null) {
address = "unknown-ip-addr";
}
auditLog.info(fmt.format(AUDIT_FORMAT, ugi.getUserName(),
address, cmd).toString());
}
{code}
I would suggest that we simply let let the logging framework itself handle
these kind of details.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)