in thrift/src/main/scala/com/twitter/finatra/thrift/filters/ThriftCommonLogFormatter.scala [28:76]
private[this] def formattedDate: String = ZonedDateTime.now.format(DateFormat)
def format(request: Any, response: Any, responseTime: Duration): String = {
val remoteAddr =
Contexts.local.get(RemoteInfo.Upstream.AddressCtx) match {
case Some(addr) =>
val asString = addr.toString
if (asString.startsWith("/")) asString.substring(1)
else asString
case _ => ""
}
val clientId = ClientId.current match {
case Some(client) => client.name
case _ => ""
}
val (methodName, serviceName) = MethodMetadata.current match {
case Some(method) => (method.methodName, method.serviceName)
case _ => ("", "")
}
val builder = new StringBuilder(256)
builder.append(remoteAddr)
builder.append(" - - [")
builder.append(formattedDate)
builder.append("] \"")
builder.append(clientId)
builder.append(' ')
builder.append(serviceName)
builder.append(' ')
builder.append(methodName)
builder.append("\" ")
response match {
case throwable: Throwable =>
builder.append(s"failure ${throwable.getClass.getSimpleName}")
builder.append(' ')
case _ =>
// do nothing
}
if (response != null && response.isInstanceOf[Array[Byte]]) {
builder.append(response.asInstanceOf[Array[Byte]].length)
builder.append(' ')
} else {
builder.append("- ")
}
builder.append(responseTime.inMillis)
builder.toString
}