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)