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