На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> наследование Logger, log4j
    Здраствуйте! да да это снова я :D

    Вопрос как расширить класс Logger из org.apache.log4j?
    Тут я пробую его расширить добавляя новый метод debug но нифига не получается :wall:
    ExpandedWrap disabled
      package com.mudosoft.libraries;
       
      import org.apache.log4j.BasicConfigurator;
      import org.apache.log4j.Logger;
       
      import java.util.function.Supplier;
       
      public class MyLoggerDemo {
       
          public static void main(String[] args) {
              Logger logger = MyLogger.getLogger("mylogger");
              BasicConfigurator.configure();
       
              logger.debug(() -> "Look at this " + expensiveOperation());
                    // ^^ не катит
          }
       
          private static String expensiveOperation() {
              return "expensive operation";
          }
      }
       
      class MyLogger extends Logger {
       
          protected MyLogger(String name) {
              super(name);
          }
       
          public void debug(Supplier<String> message) {
              if (isDebugEnabled()) {
                  debug(message.get());
              }
          }
      }

    Причина понятна, не понятно как решить :D
    Сообщение отредактировано: Cfon -
    "What I cannot create, I don't understand" Richard Feynman.
    https://github.com/Cfon/
    :D
      Сам все по решал! :D
      ExpandedWrap disabled
        public class MyLoggerDemo {
            public static void main(String[] args) {
                MyLogger logger = new MyLogger(Logger.getLogger("mylogger"));
                BasicConfigurator.configure();
         
                logger.debug(() -> "Look at this " + expensiveOperation());
                // 0 [main] DEBUG mylogger  - Look at this expensive operation
            }
         
            private static String expensiveOperation() {
                return "expensive operation";
            }
        }
         
        class MyLogger {
            private Logger logger;
         
            public MyLogger(Logger logger) {
                this.logger = logger;
            }
         
            public void debug(Supplier<String> message) {
                if (isDebugEnabled()) {
                    debug(message.get());
                }
            }
         
            public boolean isDebugEnabled() {
                return logger.isDebugEnabled();
            }
         
            public void debug(Object message) {
                logger.debug(message);
            }
        }

      Тут населедование не катит заюзал агрегацию :D
      Сообщение отредактировано: Cfon -
      "What I cannot create, I don't understand" Richard Feynman.
      https://github.com/Cfon/
      :D
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0778 ]   [ 17 queries used ]   [ Generated: 22.07.19, 02:08 GMT ]