如何仅在smtp附加程序中包括警告和更高级别的事件?
SMTPAppender仅将最后的BufferSize日志记录事件保留在其循环缓冲区中。这将内存需求保持在合理的水平,同时仍提供有用的应用程序上下文。缓冲区中的所有事件都包含在电子邮件中。缓冲区将包含触发电子邮件的事件之前级别为 TRACE 到 WARN 的最新事件。
默认行为是在记录 ERROR 或更高严重性事件时触发发送电子邮件,并将其格式化为HTML。可以通过在Appender上设置一个或多个过滤器来控制发送电子邮件的时间。 Log4j2 SMTPAppender
根据此comment,电子邮件发送事件绑定到阈值过滤器。配置阈值过滤器会更改触发发送电子邮件的事件级别,但不会影响将保存在缓冲区中的事件。
更改记录器级别本身是不可行的,因为事件也应由其他附加程序处理。
import java.io.IOException
import scala.util.Try
import org.apache.hadoop.hive.cli.CliSessionState
import org.apache.hadoop.hive.conf.HiveConf
import org.apache.hadoop.hive.ql.Driver
import org.apache.hadoop.hive.ql.session.SessionState
class getData {
val hiveConf = new HiveConf(classOf[getData])
private def getDriver: Driver = {
val driver = new Driver(hiveConf)
SessionState.start(new CliSessionState(hiveConf))
driver
}
def executeHQL(hql: String): Int = {
val responseOpt = Try(getDriver.run(hql)).toEither
val response = responseOpt match {
case Right(response) => response
case Left(exception) => throw new Exception(s"${ exception.getMessage }")
}
val responseCode = response.getResponseCode
if (responseCode != 0) {
val err: String = response.getErrorMessage
throw new IOException("Failed to execute hql [" + hql + "], error message is: " + err)
}
responseCode
}
}