chia7712 commented on code in PR #18185:
URL: https://github.com/apache/kafka/pull/18185#discussion_r1896504225


##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Loggers.java:
##########
@@ -103,18 +105,15 @@ public synchronized LoggerLevel level(String logger) {
      * @return the levels of all known loggers; may be empty, but never null
      */
     public synchronized Map<String, LoggerLevel> allLevels() {
-        Map<String, LoggerLevel> result = new TreeMap<>();
-
-        currentLoggers().stream()
-                .filter(logger -> !logger.getLevel().equals(Level.OFF))
-                .forEach(logger -> result.put(logger.getName(), 
loggerLevel(logger)));
-
-        org.apache.logging.log4j.Logger root = rootLogger();
-        if (!root.getLevel().equals(Level.OFF)) {
-            result.put(ROOT_LOGGER_NAME, loggerLevel(root));
-        }
-
-        return result;
+        return currentLoggers()

Review Comment:
   we can allow `currentLoggers` return `HashMap<String, 
org.apache.logging.log4j.Logger>` to ensure the de-duplicate.



##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Loggers.java:
##########
@@ -200,7 +198,7 @@ org.apache.logging.log4j.Logger rootLogger() {
     private void setLevel(org.apache.logging.log4j.Logger logger, Level level) 
{
         String loggerName = logger.getName();

Review Comment:
   ditto:
   ```java
           var currentLevel = logger.getLevel();
   
           if (level.equals(currentLevel)) {
               log.debug("Skipping update for logger {} since its level is 
already {}", logger.getName(), level);
               return;
           }
   
           log.debug("Setting level of logger {} (excluding children) to {}", 
logger.getName(), level);
           Configurator.setLevel(logger.getName(), level);
           lastModifiedTimes.put(logger.getName(), time.milliseconds());
   ```



##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Loggers.java:
##########
@@ -220,4 +218,21 @@ private LoggerLevel 
loggerLevel(org.apache.logging.log4j.Logger logger) {
         Long lastModified = lastModifiedTimes.get(logger.getName());
         return new LoggerLevel(Objects.toString(level), lastModified);

Review Comment:
   Could we just return the level from logger? for example:
   ```java
   return new LoggerLevel(Objects.toString(logger.getLevel()), lastModified);
   ```



##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Loggers.java:
##########
@@ -179,16 +176,17 @@ private synchronized 
List<org.apache.logging.log4j.Logger> loggers(String namesp
 
     // visible for testing
     org.apache.logging.log4j.Logger lookupLogger(String logger) {
-        return LogManager.getLogger(logger);
+        return LogManager.getLogger(isValidRootLoggerName(logger) ? 
LogManager.ROOT_LOGGER_NAME : logger);
     }
 
     List<org.apache.logging.log4j.Logger> currentLoggers() {
         LoggerContext context = (LoggerContext) LogManager.getContext(false);
-        Collection<LoggerConfig> loggerConfigs = 
context.getConfiguration().getLoggers().values();
-        return loggerConfigs.stream()
-            .map(LoggerConfig::getName)
-            .distinct()
-            .map(LogManager::getLogger)
+        // Make sure root logger has been initialized

Review Comment:
   Maybe we can collect loggers from configuration as well that the root logger 
is must included.
   ```java
           var results = new HashMap<String, org.apache.logging.log4j.Logger>();
           context.getConfiguration().getLoggers().forEach((name, logger) -> 
results.put(name, LogManager.getLogger(name)));
           context.getLoggerRegistry().getLoggers().forEach(logger -> 
results.put(logger.getName(), logger));
           return results.values();
   ```



##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Loggers.java:
##########
@@ -75,7 +77,7 @@ public synchronized LoggerLevel level(String logger) {
         Objects.requireNonNull(logger, "Logger may not be null");
 
         org.apache.logging.log4j.Logger foundLogger = null;
-        if (ROOT_LOGGER_NAME.equalsIgnoreCase(logger)) {
+        if (isValidRootLoggerName(logger)) {
             foundLogger = rootLogger();
         } else {
             List<org.apache.logging.log4j.Logger> currentLoggers = 
currentLoggers();

Review Comment:
   we can use `var` as much as possible to simplify code base



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to