test_class.file: dubbo-common/src/test/java/org/apache/dubbo/common/logger/LoggerFactoryTest.java
test_class.identifier: LoggerFactoryTest
test_case.body: @Test
      public void testGetLogger() {
          Logger logger1 = LoggerFactory.getLogger(this.getClass());
          Logger logger2 = LoggerFactory.getLogger(this.getClass());
  
          assertThat(logger1, is(logger2));
      }
test_case.class_method_signature: LoggerFactoryTest.testGetLogger()
test_case.full_signature: @Test public void testGetLogger()
test_case.identifier: testGetLogger
test_case.invocations: getLogger getClass getLogger getClass assertThat is
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetLogger()
focal_class.declarator: LOGGERS = new ConcurrentHashMap<>()
focal_class.modifier: private static final
focal_class.original_string: private static final ConcurrentMap<String, FailsafeLogger> LOGGERS = new ConcurrentHashMap<>();
focal_class.type: ConcurrentMap<String, FailsafeLogger>
focal_class.var_name: LOGGERS
focal_class.declarator: LOGGER_ADAPTER
focal_class.modifier: private static volatile
focal_class.original_string: private static volatile LoggerAdapter LOGGER_ADAPTER;
focal_class.type: LoggerAdapter
focal_class.var_name: LOGGER_ADAPTER
focal_class.file: dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java
focal_class.identifier: LoggerFactory
focal_class.class_method_signature: LoggerFactory.LoggerFactory()
focal_class.full_signature: private  LoggerFactory()
focal_class.identifier: LoggerFactory
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  LoggerFactory()
focal_class.class_method_signature: LoggerFactory.setLoggerAdapter(String loggerAdapter)
focal_class.full_signature: public static void setLoggerAdapter(String loggerAdapter)
focal_class.identifier: setLoggerAdapter
focal_class.modifiers: public static
focal_class.parameters: (String loggerAdapter)
focal_class.return: void
focal_class.signature: void setLoggerAdapter(String loggerAdapter)
focal_class.class_method_signature: LoggerFactory.setLoggerAdapter(LoggerAdapter loggerAdapter)
focal_class.full_signature: public static void setLoggerAdapter(LoggerAdapter loggerAdapter)
focal_class.identifier: setLoggerAdapter
focal_class.modifiers: public static
focal_class.parameters: (LoggerAdapter loggerAdapter)
focal_class.return: void
focal_class.signature: void setLoggerAdapter(LoggerAdapter loggerAdapter)
focal_class.class_method_signature: LoggerFactory.getLogger(Class<?> key)
focal_class.full_signature: public static Logger getLogger(Class<?> key)
focal_class.identifier: getLogger
focal_class.modifiers: public static
focal_class.parameters: (Class<?> key)
focal_class.return: Logger
focal_class.signature: Logger getLogger(Class<?> key)
focal_class.class_method_signature: LoggerFactory.getLogger(String key)
focal_class.full_signature: public static Logger getLogger(String key)
focal_class.identifier: getLogger
focal_class.modifiers: public static
focal_class.parameters: (String key)
focal_class.return: Logger
focal_class.signature: Logger getLogger(String key)
focal_class.class_method_signature: LoggerFactory.getLevel()
focal_class.full_signature: public static Level getLevel()
focal_class.identifier: getLevel
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: Level
focal_class.signature: Level getLevel()
focal_class.class_method_signature: LoggerFactory.setLevel(Level level)
focal_class.full_signature: public static void setLevel(Level level)
focal_class.identifier: setLevel
focal_class.modifiers: public static
focal_class.parameters: (Level level)
focal_class.return: void
focal_class.signature: void setLevel(Level level)
focal_class.class_method_signature: LoggerFactory.getFile()
focal_class.full_signature: public static File getFile()
focal_class.identifier: getFile
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: File
focal_class.signature: File getFile()
focal_method.body: public static Logger getLogger(Class<?> key) {
          return LOGGERS.computeIfAbsent(key.getName(), name -> new FailsafeLogger(LOGGER_ADAPTER.getLogger(name)));
      }
focal_method.class_method_signature: LoggerFactory.getLogger(Class<?> key)
focal_method.full_signature: public static Logger getLogger(Class<?> key)
focal_method.identifier: getLogger
focal_method.invocations: computeIfAbsent getName getLogger
focal_method.modifiers: public static
focal_method.parameters: (Class<?> key)
focal_method.return: Logger
focal_method.signature: Logger getLogger(Class<?> key)