This is an automated email from the ASF dual-hosted git repository.
mimaison pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 071e916330b MINOR: Move Log4jControllerRegistration to server module
(#22779)
071e916330b is described below
commit 071e916330b9be5dc2865f3ebade7b8141423d03
Author: majialong <[email protected]>
AuthorDate: Wed Jul 15 19:35:35 2026 +0800
MINOR: Move Log4jControllerRegistration to server module (#22779)
Move `Log4jControllerRegistration` from core to the server module.
Reviewers: Mickael Maison <[email protected]>, Chia-Ping Tsai
<[email protected]>
---
core/src/main/scala/kafka/utils/Logging.scala | 21 +---------
.../server/logger/Log4jControllerRegistration.java | 49 ++++++++++++++++++++++
.../kafka/server/logger/LoggingController.java | 5 +--
3 files changed, 53 insertions(+), 22 deletions(-)
diff --git a/core/src/main/scala/kafka/utils/Logging.scala
b/core/src/main/scala/kafka/utils/Logging.scala
index cc51cdcc422..9915e61c7f8 100755
--- a/core/src/main/scala/kafka/utils/Logging.scala
+++ b/core/src/main/scala/kafka/utils/Logging.scala
@@ -18,26 +18,9 @@
package kafka.utils
import com.typesafe.scalalogging.Logger
-import org.apache.kafka.common.utils.Utils
-import org.apache.kafka.server.logger.LoggingController
+import org.apache.kafka.server.logger.Log4jControllerRegistration
import org.slf4j.{LoggerFactory, Marker, MarkerFactory}
-object Log4jControllerRegistration {
- private val logger = Logger(this.getClass.getName)
-
- private val loggingMBean = new LoggingController
- registerMBean(loggingMBean, "kafka.Log4jController")
-
- private def registerMBean(mbean: LoggingController, typeAttr: String): Unit
= {
- try {
- Utils.registerMBean(mbean, s"kafka:type=$typeAttr")
- logger.info("Registered `kafka:type={}` MBean", typeAttr)
- } catch {
- case e: Exception => logger.warn("Couldn't register `kafka:type={}`
MBean", typeAttr, e)
- }
- }
-}
-
private object Logging {
private val FatalMarker: Marker = MarkerFactory.getMarker("FATAL")
}
@@ -48,7 +31,7 @@ trait Logging {
protected var logIdent: String = _
- Log4jControllerRegistration
+ Log4jControllerRegistration.register()
protected def loggerName: String = getClass.getName
diff --git
a/server/src/main/java/org/apache/kafka/server/logger/Log4jControllerRegistration.java
b/server/src/main/java/org/apache/kafka/server/logger/Log4jControllerRegistration.java
new file mode 100644
index 00000000000..a6a309f10c5
--- /dev/null
+++
b/server/src/main/java/org/apache/kafka/server/logger/Log4jControllerRegistration.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.kafka.server.logger;
+
+import org.apache.kafka.common.utils.Utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Registers the {@link LoggingController} MBean, which lets users dynamically
alter log4j levels
+ * at runtime. The MBean is registered only once, on the first call to {@link
#register()}.
+ */
+public final class Log4jControllerRegistration {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(Log4jControllerRegistration.class);
+
+ private static final AtomicBoolean REGISTERED = new AtomicBoolean(false);
+
+ private static final String MBEAN_TYPE = "kafka.Log4jController";
+ private static final String MBEAN_NAME = "kafka:type=" + MBEAN_TYPE;
+
+ private Log4jControllerRegistration() {
+ }
+
+ public static void register() {
+ if (REGISTERED.compareAndSet(false, true)) {
+ if (Utils.registerMBean(new LoggingController(), MBEAN_NAME)) {
+ LOGGER.info("Registered `{}` MBean", MBEAN_NAME);
+ }
+ }
+ }
+}
diff --git
a/server/src/main/java/org/apache/kafka/server/logger/LoggingController.java
b/server/src/main/java/org/apache/kafka/server/logger/LoggingController.java
index fba75b10c07..8b531a42dd5 100644
--- a/server/src/main/java/org/apache/kafka/server/logger/LoggingController.java
+++ b/server/src/main/java/org/apache/kafka/server/logger/LoggingController.java
@@ -25,9 +25,8 @@ import java.util.Map;
/**
* An MBean that allows the user to dynamically alter log4j levels at runtime.
- * The companion object contains the singleton instance of this class and
- * registers the MBean. The {@code kafka.utils.Logging} trait forces
initialization
- * of the companion object.
+ * {@link Log4jControllerRegistration} registers this MBean. The {@code
kafka.utils.Logging}
+ * trait invokes the registration helper during initialization.
*/
public class LoggingController implements LoggingControllerMBean {