Re: Logger and Singleton разбор полетов.
От: _FRED_ Черногория
Дата: 02.02.08 10:39
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Как большой любитель шаблона Singleton, хочу поговорить про использование этого шаблона для логирования. Логирование часто приводится как пример умесного применения сингелтона.


Расскажи пожалуйста, как в описанной системе будет\может быть реализована следующая возможность: отключение логирования в зависимости от модуля, в котором логирование было вызвано, например, я не хочу логировать отрисовку графики, но хочу логировать сетевую активность. Причём оба модуля, отвечающие за графику и за сеть, имеют одну и ту жу точку входа к механизму логирования, как это сделано в приведённом примере: Logger->GetInstance(); Мне видится только один способ: коментирование всех вызовов логирования
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Logger and Singleton разбор полетов.
От: minorlogic Украина  
Дата: 02.02.08 11:15
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Расскажи пожалуйста, как в описанной системе будет\может быть реализована следующая возможность: отключение логирования в зависимости от модуля, в котором логирование было вызвано, например, я не хочу логировать отрисовку графики, но хочу логировать сетевую активность. Причём оба модуля, отвечающие за графику и за сеть, имеют одну и ту жу точку входа к механизму логирования, как это сделано в приведённом примере: Logger->GetInstance(); Мне видится только один способ: коментирование всех вызовов логирования


Мне кажется это ни коим образом не относится к теме ветки. Если тебя интересует как реализовать фильтрацию логирования , я советую поискать прямо на форуме. Тут было достаточно много веток про логи и интерфейсы к ним.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Logger and Singleton разбор полетов.
От: _FRED_ Черногория
Дата: 02.02.08 12:34
Оценка: +2
Здравствуйте, minorlogic, Вы писали:

M>Мне кажется это ни коим образом не относится к теме ветки. Если тебя интересует как реализовать фильтрацию логирования , я советую поискать прямо на форуме. Тут было достаточно много веток про логи и интерфейсы к ним.


Это имеет прямое отношение к реализации посредством синглетона. Какие известные системы логирования, основанные на синглетонах, это позволяют? Ещё раз, как это можно реализовать в описанной в корневом сообщении системе?

Мне не видно, как можно _хорошо_ и _удобно_ реализовать фильтрацию одновременно по различным ортоганальным уровням, таким как вызывающий модуль, важность (ошибка|предупреждение|информация), природа (исключение|логика).

З.Ы. Да и вежливость ответов отнюдь не располагает к дискуссии Это только мне кажется, или для чего топик был создан?

Критику синглетонов можно так же при желании отыскать на этом же самом форуме, а в корневом сообщении я не нашёл ни одного опровержения уже приведённых ранее доводов Ты надеешься что в очередной раз IB и WolfHound поленятся мучить свои клавиатуры? Так вот судя по манере ответов, правильно сделают
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Logger and Singleton разбор полетов.
От: minorlogic Украина  
Дата: 02.02.08 16:38
Оценка:
Ты пытаешься увести тему в сторону , я вежливо обращаю на это внимание. Мне лично в этой теме не хочется обсуждать офтопики, возможно ктонить захочет вести с тобой диалог по заданному направлениею.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: Logger and Singleton разбор полетов.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.02.08 16:46
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Ты пытаешься увести тему в сторону , я вежливо обращаю на это внимание. Мне лично в этой теме не хочется обсуждать офтопики, возможно ктонить захочет вести с тобой диалог по заданному направлениею.


Тебе пытаются объяснить очень простую вещь: невозможно обсуждать преимущества и недостатки синглтона на примере его некорректного использования.
Я не IB и не Wolfhound, я, в отличие от них, считаю что синглтон вполне имеет право на жизнь. Но даже меня твой пример коробит.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Logger and Singleton разбор полетов.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.02.08 16:54
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Это имеет прямое отношение к реализации посредством синглетона. Какие известные системы логирования, основанные на синглетонах, это позволяют? Ещё раз, как это можно реализовать в описанной в корневом сообщении системе?


_FR>Мне не видно, как можно _хорошо_ и _удобно_ реализовать фильтрацию одновременно по различным ортоганальным уровням, таким как вызывающий модуль, важность (ошибка|предупреждение|информация), природа (исключение|логика).


Синглтоновость тут как раз не помеха и ServiceProvider не помощник в фильтрации. Модуль надо маркировать явно. Почему я так думаю:
  • Модули вызывают друг друга и если мне с верхнего уровня доступна только бизнес-логика, то я лучшем случае могу создать UserLogger и OrderLogger, но не DatabaseLogger или NetworkLogger. Подобные детали скрыты и позволять создавать логегры на любом уровня я считаю большой ошибкой. В результате мы всё равно придём к использования синглтона, так как откуда-то надо брать настройки логгеров, только это будет хорошо замаскированный и сильно запутанный синглтон.
  • Модули которые вызывают логгер не всегда являются характеризующими. Например, сетевой трафик при скачивании курса валют с сайта ЦБ и сетевой трафик при отсылке данных об ошибке приложения оба HTTP трафики, но писать просто NetworkModule ИМХО не правильно.
  • A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[5]: Logger and Singleton разбор полетов.
    От: Cyberax Марс  
    Дата: 02.02.08 17:02
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

    R>>Просто намекал, к примеру, на log4j, в котором singleton вроде бы достаточно умело обходит описанные вами выше проблемы.

    M>У тебя есть шанс показать как именно и дать мне информацию к размышлениею.
    Достаточно просто. В начале нужного класса ставишь делаешь так:
    public class SomeClass
    {
        private final static Log log=LogFactory.getLogger(SomeClass.class);
    
        ...
        void someMethod()
        {
            log.error("An error!");
            log.debug("Debug");
            ...
        }
        ...
    }


    И настраиваешь:
    # Set root logger level to WARN and its only appender to A1.
    log4j.rootLogger=WARN, A1
    
    # A1 is set to be a ConsoleAppender.
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    
    # A1 uses PatternLayout.
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    # Print debug info for our classes
    log4j.logger.com.ourapp=DEBUG
    
    # Don't print too much debug info
    log4j.logger.com.ourapp.SomeClass=WARN

    То есть, выбор формата лога и уровня отладки выносится из основного кода.

    Там еще есть более мощная XML-конфигурация, но мне ни разу не приходилось с ней сталкиваться.
    Sapienti sat!
    Re[6]: Logger and Singleton разбор полетов.
    От: minorlogic Украина  
    Дата: 02.02.08 20:10
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Тебе пытаются объяснить очень простую вещь: невозможно обсуждать преимущества и недостатки синглтона на примере его некорректного использования.


    Может оттого что такого примера коректного использования нет ?

    A>Я не IB и не Wolfhound, я, в отличие от них, считаю что синглтон вполне имеет право на жизнь. Но даже меня твой пример коробит.


    Рад что коробит.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[6]: Logger and Singleton разбор полетов.
    От: minorlogic Украина  
    Дата: 02.02.08 20:19
    Оценка:
    Это больше похоже на вариант который продемонстирован в конце и у которого есть четкое разделение на глобальную точку входа "LogFactory.getLogger(SomeClass.class);" и остальное.

    или переформулируя вопрос , неужели LogFactory гденить вызывает getInstance. ?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[7]: Logger and Singleton разбор полетов.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 02.02.08 20:43
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

    A>>Тебе пытаются объяснить очень простую вещь: невозможно обсуждать преимущества и недостатки синглтона на примере его некорректного использования.

    M>Может оттого что такого примера корректного использования нет ?

    Твой пример помимо использования синглтона содержит множество других моментов, которые вызывают сомнение в профессионализме автора. На это тебе уже неоднократно указали.

    Что касается моего личного мнения, я его уже высказал: синглтоном должна быть конфигурация логгера. Это очень хорошо отражено в описании ULP — "ULP configuration would not be available at the 'user' level, it would be a system service.". Это не бред кучки фанатиков, это требование объективной реальности. Я, как человек, имеющий отношение не только к созданию, но и к последующему сопровождению систем, как человек активно общающийся с системными администраторами и сам обладающими достаточно большими навыками в этой области могу лично подтвердить на примерах из жизни, почему журналирование надо настраивать для уровне системы, а не отдельных приложений. Я уже дал ссылки на другие материалы по теме, в частности на RFC протокола SysLog, но читать ты их не хочешь, ты хочешь солировать. К сожалению ничего умного или хотя бы интересного от тебя не исходит, ты упрямо гнёшь своё. Мне общаться с человеком который приводит нелепые примеры для доказательства тезисов в сфере, в которой он ничего не понимает, не интересно.

    Общайся ты в форме диалога, задавая вопросы и выдвигая предположения, было бы лучше. Ты же продемонстрировал абсолютно неадекватно спроектированную систему, обозначил какие-то проблемы второго плана, сделал из их наличия "выводы" и теперь высокомерно учишь окружающих как жить. Кавычки у слова "выводы" не случайны, так как твой ход мыслей и логика две вещи несовместимые.

    Кончай этот балаган и ознакомься с существующими системами, стандартами, документами. А вот потом поговорим.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[7]: Logger and Singleton разбор полетов.
    От: Cyberax Марс  
    Дата: 02.02.08 20:52
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

    M>Это больше похоже на вариант который продемонстирован в конце и у которого есть четкое разделение на глобальную точку входа "LogFactory.getLogger(SomeClass.class);" и остальное.

    M>или переформулируя вопрос , неужели LogFactory гденить вызывает getInstance. ?
    Собственно, да. Точнее, не getInstance(), а просто использует статическую переменную.
    Sapienti sat!
    Re[8]: Logger and Singleton разбор полетов.
    От: minorlogic Украина  
    Дата: 02.02.08 20:57
    Оценка: -1
    Здравствуйте, adontz, Вы писали:

    A>Твой пример помимо использования синглтона содержит множество других моментов, которые вызывают сомнение в профессионализме автора. На это тебе уже неоднократно указали.


    Я ему передам.

    A>Что касается моего личного мнения, я его уже высказал: синглтоном должна быть конфигурация логгера. Это очень хорошо отражено в описании ULP — "ULP configuration would not be available at the 'user' level, it would be a system service.". Это не бред кучки фанатиков, это требование объективной реальности. Я, как человек, имеющий отношение не только к созданию, но и к последующему сопровождению систем, как человек активно общающийся с системными администраторами и сам обладающими достаточно большими навыками в этой области могу лично подтвердить на примерах из жизни, почему журналирование надо настраивать для уровне системы, а не отдельных приложений. Я уже дал ссылки на другие материалы по теме, в частности на RFC протокола SysLog, но читать ты их не хочешь, ты хочешь солировать. К сожалению ничего умного или хотя бы интересного от тебя не исходит, ты упрямо гнёшь своё. Мне общаться с человеком который приводит нелепые примеры для доказательства тезисов в сфере, в которой он ничего не понимает, не интересно.


    А мне неинтересно ТВОЕ мнение. Надеюсь на том и разойдемся.

    A>Общайся ты в форме диалога, задавая вопросы и выдвигая предположения, было бы лучше. Ты же продемонстрировал абсолютно неадекватно спроектированную систему, обозначил какие-то проблемы второго плана, сделал из их наличия "выводы" и теперь высокомерно учишь окружающих как жить. Кавычки у слова "выводы" не случайны, так как твой ход мыслей и логика две вещи несовместимые.


    Если ты не разобрался о чем был пост, то это ТВОИ проблемы. Напомню что у меня не было задачи описывать адекватно спроектированную систему логирования.

    A>Кончай этот балаган и ознакомься с существующими системами, стандартами, документами. А вот потом поговорим.


    Мне с ТОБОЙ говорить уже нет желания , а вот выводы о том что я этими системами не знаком прошу считать ошибочными.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[8]: Logger and Singleton разбор полетов.
    От: minorlogic Украина  
    Дата: 02.02.08 21:05
    Оценка:
    Здравствуйте, Cyberax, Вы писали:

    По приведенным строчкам я увидел что глобальная точка входа и контроль единсвенности данных разделены по разным сущностям. Я что то пропустил ?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[9]: Logger and Singleton разбор полетов.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 02.02.08 21:09
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

    A>>Твой пример помимо использования синглтона содержит множество других моментов, которые вызывают сомнение в профессионализме автора. На это тебе уже неоднократно указали.

    M>Я ему передам.

    Передай. Думаешь я против? Я эти слова могу сказать лично, в лицо. Я ни от кого не прячусь и пугать меня каким-то мифическим гуру не надо.

    M>А мне неинтересно ТВОЕ мнение. Надеюсь на том и разойдемся.


    Смешно ей богу. Я даю ссылки на официальные документы, а тебе не интересно видите ли моё мнение. А мнение мировой общественности?

    M>Если ты не разобрался о чем был пост, то это ТВОИ проблемы. Напомню что у меня не было задачи описывать адекватно спроектированную систему логирования.


    Пост был ни о чём, так как содержал слишком много ошибок проектирования. Показать что глобальная точка доступа и синглтон разные вещи тебе не удалось, потому что у тебя там нет адекватно применённого синглтона и нет, на самом деле, даже глобальной точки доступа.

    A>>Кончай этот балаган и ознакомься с существующими системами, стандартами, документами. А вот потом поговорим.

    M>Мне с ТОБОЙ говорить уже нет желания , а вот выводы о том что я этими системами не знаком прошу считать ошибочными.

    Я об этом сужу по коду, который ты предоставил. Метод SetInstance — это код студента. Вот пусть кто хочет, тот и обижается, но я бы за такие решения с должности архитектора снимал.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.