You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by GitBox <gi...@apache.org> on 2022/01/17 07:45:51 UTC
[GitHub] [incubator-kyuubi] turboFei commented on a change in pull request #1769: [BUILD] Migrate from log4j1 to log4j2
turboFei commented on a change in pull request #1769:
URL: https://github.com/apache/incubator-kyuubi/pull/1769#discussion_r785705974
##########
File path: kyuubi-common/src/main/scala/org/apache/kyuubi/operation/log/LogDivertAppender.scala
##########
@@ -21,43 +21,238 @@ import java.io.CharArrayWriter
import scala.collection.JavaConverters._
-import org.apache.log4j._
-import org.apache.log4j.spi.{Filter, LoggingEvent}
+import org.apache.logging.log4j.{Level, LogManager, Marker}
+import org.apache.logging.log4j.core.{Filter, LogEvent, Logger, StringLayout}
+import org.apache.logging.log4j.core.Filter.Result
+import org.apache.logging.log4j.core.LifeCycle.State
+import org.apache.logging.log4j.core.appender.{AbstractWriterAppender, ConsoleAppender, WriterManager}
+import org.apache.logging.log4j.core.config.Property
+import org.apache.logging.log4j.core.layout.PatternLayout
+import org.apache.logging.log4j.message.Message
-class LogDivertAppender extends WriterAppender {
+class LogDivertAppender(
+ name: String,
+ layout: StringLayout,
+ filter: Filter,
+ ignoreExceptions: Boolean,
+ immediateFlush: Boolean,
+ writer: CharArrayWriter)
+ extends AbstractWriterAppender[WriterManager](
+ name,
+ layout,
+ filter,
+ ignoreExceptions,
+ immediateFlush,
+ Property.EMPTY_ARRAY,
+ new WriterManager(writer, name, layout, true)) {
+ def this() = this(
+ "KyuubiEngineLogDivertAppender",
+ LogDivertAppender.initLayout(),
+ null,
+ false,
+ true,
+ LogDivertAppender.writer)
- final private val writer = new CharArrayWriter
-
- final private val lo = Logger.getRootLogger
- .getAllAppenders.asScala
- .find(_.isInstanceOf[ConsoleAppender])
- .map(_.asInstanceOf[Appender].getLayout)
- .getOrElse(new PatternLayout("%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n"))
-
- setName("KyuubiSparkSQLEngineLogDivertAppender")
- setWriter(writer)
- setLayout(lo)
-
- addFilter { _: LoggingEvent =>
- if (OperationLog.getCurrentOperationLog == null) Filter.DENY else Filter.NEUTRAL
- }
+ addFilter(new NameFilter())
/**
- * Overrides WriterAppender.subAppend(), which does the real logging. No need
+ * Overrides AbstractWriterAppender.append(), which does the real logging. No need
* to worry about concurrency since log4j calls this synchronously.
*/
- override protected def subAppend(event: LoggingEvent): Unit = {
- super.subAppend(event)
+ override def append(event: LogEvent): Unit = {
+ super.append(event)
// That should've gone into our writer. Notify the LogContext.
val logOutput = writer.toString
writer.reset()
val log = OperationLog.getCurrentOperationLog
if (log != null) log.write(logOutput)
}
+
+ class NameFilter extends Filter {
Review comment:
do you mean
```
class NeutralFilter extends Filter?
```
There is no class named `NeutralFilter`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@kyuubi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org