Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
К чему я это спросил? А к тому, что первое сообщение в данной теме начинается с фразы:
AlekseySQL
Хочется в случае падения обработки (которая будет работать очень долго) понять почему это произошло.


Но ведь Вы, Алексей, таки понимаете, в чем разница между падением обработки и проведением расследования на платформе Windows и на платформе Linux? Вот бы с чего начать обсуждение по данной проблематике!
9 фев 19, 17:17    [21805315]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Andy_OLAP
К чему я это спросил? А к тому, что первое сообщение в данной теме начинается с фразы:
AlekseySQL
Хочется в случае падения обработки (которая будет работать очень долго) понять почему это произошло.


Но ведь Вы, Алексей, таки понимаете, в чем разница между падением обработки и проведением расследования на платформе Windows и на платформе Linux? Вот бы с чего начать обсуждение по данной проблематике!


Еще одни клоун, хорошо характеризующий всю собранную лысым дядькой компанию зверят.
9 фев 19, 17:30    [21805326]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
мне прям даже лестно, какой я, оказывается, манипулятор!
9 фев 19, 17:37    [21805330]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Лысый дядька
мне прям даже лестно, какой я, оказывается, манипулятор!

Таки да! А что делать! Будем манипулироваться под Вашим чутким руководством.
9 фев 19, 17:41    [21805333]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
AlekseySQL
Еще одни клоун, хорошо характеризующий всю собранную лысым дядькой компанию зверят.

AlekseySQL
Да, я опять обосрался. Вы меня, ребята, притормаживайте, когда я начинаю адскую дичь загонять

Вы начинаете адскую дичь загонять. Как Вас можно притормозить в таком случае? Просьбу Вы ранее изложили, а метод не выбрали.
9 фев 19, 17:51    [21805337]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Придумал такой вариант:
1. Все логируемые действия выносятся в отдельные функции, и если необходимо логировать в случае отсутствия ошибки, т.е. на уровне info для них задаются два параметра: success и failer. Например:

@log_result(log_information=False)    
def _create_connecton(self):
    self.connection = MySQL.Connection()

@log_result(show_in_interface=True)
def _create_table(self, table):
    self.connection.execute(code=table.creating(), need_commit=True)
_create_table.succsess = 'Table %s successfully created!'
_create_table.failer = 'Creating table %s successfully failed!'


2. Пишется декоратор, которым обрамляются все логируемые функции:
def log_result(log_information=True, show_in_interface=False):
    def deco(func):
        def wrapped(self, *args, **kwargs):
            try:
                returned_value = None
                returned_value = func(self, *args, **kwargs)
            except Exception as err:
                General.exist_error = True
                self.loger.log_data(err)
                raise General.ExistError
            else:
                if log_information:
                    if returned_value:
                        self.loger.log_data(func.success, show_in_interface)
                    else:
                        self.loger.log_data(func.failer, show_in_interface)
        
            return returned_value
        return wrapped
    return deco    


Такой подход позволяет отделить прикладной код от кода логирования (даже сообщения успех/ неудача задаются отдельно). Но в объекте необходимо иметь ссылку на loger, который собственно и будет писать данные в файл. Я решил не пользоваться встроенной библиотекой logging, поскольку некоторые сообщения я хочу также пробрасывать на форму пользователя, чтобы он (а это буду я!) понял, что надо лезть анализировать логи.

Есть предложения по улучшению моего подхода?
9 фев 19, 19:10    [21805358]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
AlekseySQL
Хочешь сказать ты в этой теме написал что- то содержательное? Ты из этого факта понимаешь, что вся твоя длинная и нудная писанина в первую очередь относится к тебе?
Во-первых, мы с Вами в подворотне на брудершафт не выпивали, а потому тыкать в меня не надо, такого повода Вам я не давал.

Во-вторых, по теме исходного вопроса о логгировании я вообще ничего не написал, так как не являюсь компетентным специалистом в данном вопросе.

В третьих, к сожалению, я вынужден констатировать факты, о которых упомянул. Увы, данный форум тоже им подвержен. Как модератор, я вынужден, если не внимательно читать, то, хотя бы, просматривать по возможности все сообщения и вижу общую картину. К сожалению, с течением времени форум становится менее интересным и привлекательным.
Не могу не согласиться с уважаемым Hett в части снижения сложности задач и интересности обсуждаемых вопросов. Однако, чем сложнее вопрос - тем более глубоких познаний и понимания он требует, притом, применительно к конкретному ЯП, фреймворку и т.п. Насчет 99% - перебор, конечно, однако, заметное число вопросов (особенно, по PHP) слишком банальны. Настолько, что в качестве ответа достаточно дать ссылку на документацию. Притом, нередко, это ссылка на какие-то разделы по основам PHP или по конкретной используемой функции. Читали топикстартеры документацию? Вряд ли. Иначе не было бы простейшего вопроса с простейшим ответом. А почему не читали? Ну вот я не знаю, почему.
Отдельные товарищи так и вовсе ведут себя как в личном блоге, изучая программирование методом тыка.
Всё это, увы, совсем не добавляет форуму ни полезности, ни авторитета. Чему может научиться начинающий, чего тут полезного почерпнет?

Надеюсь, понятно изложил свою точку зрения.

И ещё момент. В начале нулевых я довольно долго обретался на форуме по LISP. Обсуждения были там обычно содержательные, предлагались и сравнивались различные способы решения задачи и это было, скорее, обычным явлением, чем исключением. То ли форум другой, то ли эпоха изменилась. Давно там не был.
9 фев 19, 21:13    [21805421]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
vkle
И ещё момент. В начале нулевых я довольно долго обретался на форуме по LISP. Обсуждения были там обычно содержательные, предлагались и сравнивались различные способы решения задачи и это было, скорее, обычным явлением, чем исключением. То ли форум другой, то ли эпоха изменилась. Давно там не был.

В начале нулевых интернет был у тех, кому он действительно был нужен.
9 фев 19, 21:21    [21805426]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
Лысый дядька
В начале нулевых интернет был у тех, кому он действительно был нужен.
Ну почему же? Для частных лиц карточки на поминутный или помегабайтный интернет по телефону свободно продавались (по крайней мере, в Самаре, где я живу, проблем не было). Были какие-то тарифы по долговременному договору на тырнет. Приобресть модем - не проблема. На предприятиях, конечно, были ограничения, но подробностей я не знаю. Думаю, программисты совсем уж без интернета не оставались, судя по постам. Да и посты в форум писали обыкновенные люди, чья деятельность так или иначе связана с компьютерными технологиями. В этом смысле мало что изменилось кардинально.

Однако, мы очень сильно ушли от темы топика. Если есть желание продолжить обсуждение более развернуто, предлагаю создать отдельный топик. Возможно, в другом подфоруме.
9 фев 19, 22:12    [21805454]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
vkle
AlekseySQL
Хочешь сказать ты в этой теме написал что- то содержательное? Ты из этого факта понимаешь, что вся твоя длинная и нудная писанина в первую очередь относится к тебе?
Во-первых, мы с Вами в подворотне на брудершафт не выпивали, а потому тыкать в меня не надо, такого повода Вам я не давал.

Во-вторых, по теме исходного вопроса о логгировании я вообще ничего не написал, так как не являюсь компетентным специалистом в данном вопросе.

В третьих, к сожалению, я вынужден констатировать факты, о которых упомянул. Увы, данный форум тоже им подвержен. Как модератор, я вынужден, если не внимательно читать, то, хотя бы, просматривать по возможности все сообщения и вижу общую картину. К сожалению, с течением времени форум становится менее интересным и привлекательным.
Не могу не согласиться с уважаемым Hett в части снижения сложности задач и интересности обсуждаемых вопросов. Однако, чем сложнее вопрос - тем более глубоких познаний и понимания он требует, притом, применительно к конкретному ЯП, фреймворку и т.п. Насчет 99% - перебор, конечно, однако, заметное число вопросов (особенно, по PHP) слишком банальны. Настолько, что в качестве ответа достаточно дать ссылку на документацию. Притом, нередко, это ссылка на какие-то разделы по основам PHP или по конкретной используемой функции. Читали топикстартеры документацию? Вряд ли. Иначе не было бы простейшего вопроса с простейшим ответом. А почему не читали? Ну вот я не знаю, почему.
Отдельные товарищи так и вовсе ведут себя как в личном блоге, изучая программирование методом тыка.
Всё это, увы, совсем не добавляет форуму ни полезности, ни авторитета. Чему может научиться начинающий, чего тут полезного почерпнет?

Надеюсь, понятно изложил свою точку зрения.

И ещё момент. В начале нулевых я довольно долго обретался на форуме по LISP. Обсуждения были там обычно содержательные, предлагались и сравнивались различные способы решения задачи и это было, скорее, обычным явлением, чем исключением. То ли форум другой, то ли эпоха изменилась. Давно там не был.


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

Вот ты сам говоришь, что уровень дискуссий упал, но в тоже время признаешь, что вопрос логирования является для тебя неизвестным. Так может надо было с самого начала удалять комментарии, которые не позволяют раскрыть тему логирования?
10 фев 19, 09:05    [21805553]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
Оказалось, что декораторы не подхватывают атрибуты декорируемых функций. Поэтому сохранять в них сообщения об успехах / неудачах не имеет смысла (ведь вся логика отправки сообщений реализована в декораторе, который не видит этих строк).

Поэтому сейчас пришел к более простому в реализации, но менее красивому с точки зрения полученных логов решению: строку сообщения получаю из возвращаемого значения, названия функции и ее параметров:

def log_result(log_information=True, show_in_interface=False):
    def deco(func):
        def wrapped(self, *args, **kwargs):
            try:
                returned_value = None
                returned_value = func(self, *args, **kwargs)
            except Exception as err:
                General.exist_error = True
                self.loger.log_data(err)
                raise General.ExistError
            else:
                if log_information:
                    if returned_value:
                        message = 'Success: ' 
                    else:
                        message = 'Failer: '
                        
                    message += func.__name__.strip('_') + '\t' + str(*args) + '\t' + str(**kwargs)
                    self.loger.log_data(message, show_in_interface)
            return returned_value
        return wrapped
    return deco  
10 фев 19, 09:10    [21805554]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
Всем кто давал советы- спасибо! В результате пришел к такому варианту (слегка "украсил" предыдущий код):

def message_result(log_information=True, show_in_interface=False):
    def deco(func):
        def wrapped(self, *args, **kwargs):
            try:
                returned_value = None
                returned_value = func(self, *args, **kwargs)
            except Exception as err:
                General.exist_error = True
                self.loger.log_data(err)
                raise General.TerminateException
            else:
                if log_information:
                    position_parameters = str(*args)    
                    named_parameters = str(**kwargs)
                    if position_parameters and named_parameters:
                        parameters = position_parameters + ', ' + named_parameters
                    else:
                        parameters = position_parameters + named_parameters
                        
                    message = str(returned_value) + ' ' + func.__name__.strip('_') + '(' + parameters + ')\n'
                    self.loger.log_data(message, show_in_interface)
            return returned_value
        return wrapped
    return deco 


Этот мега- декоратор позволяет достаточно просто логировать данные. Для этого у экземляра объекта (или класса) должен быть член loger с методом log_data.
10 фев 19, 12:43    [21805609]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
AlekseySQL_2
Как ты думаешь,
Ещё раз, конкретно для Вас лично: повода тыкать я Вам не давал.
Это я Вам понятно изложил? Судя по тому факту, что лично для Вас приходится простые вещи уровня детского садика объяснять повторно, у меня есть подозрение, что как-то не совсем понятно.

AlekseySQL_2
у людей, которые видят как участников форума "заклевывают" и модератор помогает в этом деле
Ну Вы как в детском саде, ей Богу. Вас надо учить общаться? Извините, вот мне не хочется. Вас, простите, "заклевывают" - где и как? Вы сами избрали для себя такую роль своим же поведением.

Вам что-то ответили. Ответ может быть "в тему" или "не в тему". Ответов "не в тему", притом, без злого умысла, довольно много, кстати, так как вопросы, порой, весьма неоднозначно трактуются. Что можно сделать с ответом "не в тему"?

Проигнорировать - наверно, самое простое. Вообще ничего не делать. Нет ответа - нет продолжения развития "не в тему".

Можно аргументировано ответить вроде: "Вы ошибаетесь. Автор такой-то в книге такой-то изложил метод или способ, но мне он не подходит потому что <объясняете, почему не подходит>. Другой автор в другой книге описал способ, но в моем случае он неприемлем потому что <почему именно>.".

Вы избрали не слишком удачный для Вас вариант выяснения кто тут прав, а кто не прав:
AlekseySQL
Лысый дядька
В общем, не прошло и месяца с начала вашей бурной деятельности, а учебник так и не был открыт.


Мой вопрос говорит о том, что я признаю неполноту своих знаний, а твой ответ- уверенность в полноте твоих знаний. Кто из нас прав? По- моему, ответ очевиден.
Притом, дальнейший разговор ведете в ещё более жестком ключе:
AlekseySQL
Ты психически болен.
У Вас есть какое-то образование в области психологии, чтобы делать такие утверждения? Не знаю, предположим, что у Вас за плечами есть соответствующая кафедра института. Если есть основания - аргументируйте Ваше утверждение. Иначе оно переходит в разряд "сам дурак". Ну а далее Вы начинаете клевать Лысого дядьку и откровенно хамить:
AlekseySQL
Ты ничтожество потому что подначиваешь гнобить человека и радуешься своей деятельности. Ты- человеческий мусор.


Вопрос: что тут происходит?
Для меня, как для модератора, ответ очевиден: В ответ на предложение почитать книгу по теме, Вы пишите оскорбляющие сообщения. Правила форума явным образом запрещают это делать.
Возможно, Вы не читали правила форума. Рекомендую ознакомиться.

Понятно изложил?

Как модератор, предлагаю Вам извиниться перед участниками форума и продолжить обсуждение без склок.
10 фев 19, 13:33    [21805634]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
vkle
Member

Откуда: Самара
Сообщений: 14558
AlekseySQL_2
Вот ты сам говоришь, что уровень дискуссий упал, но в тоже время признаешь, что вопрос логирования является для тебя неизвестным. Так может надо было с самого начала удалять комментарии, которые не позволяют раскрыть тему логирования?
Именно потому, что я, как указал выше, не являюсь компетентным специалистом в особенностях ЯП Python (кстати, правила рекомендуют указывать ЯП в названии темы), я не могу судить о том, рассмотрен ли данный вопрос или доступные методы/способы его решения в документации по используемому ЯП, в каждой ли книжке или через одну они так или иначе освещены или нигде и никак не раскрыты вовсе.

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

Вам предложили прочитать книги Марка Лутца. Посмотрел, какие есть книги этого автора. Мужик, наверняка, толковый, если ему есть что сказать в толстых многотомных изданиях. На его книги ссылаются, как на полезные. Притом, как для начального, так и для углубленного изучения ЯП. Считаю, есть смысл перенять хотя бы часть его знаний.

Так и что удалять предлагаете - Ваши хамские посты или предложения в Ваш адрес успокоиться и извиниться? Уточните.
10 фев 19, 15:46    [21805696]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
vkle
AlekseySQL_2
Вот ты сам говоришь, что уровень дискуссий упал, но в тоже время признаешь, что вопрос логирования является для тебя неизвестным. Так может надо было с самого начала удалять комментарии, которые не позволяют раскрыть тему логирования?
Именно потому, что я, как указал выше, не являюсь компетентным специалистом в особенностях ЯП Python (кстати, правила рекомендуют указывать ЯП в названии темы), я не могу судить о том, рассмотрен ли данный вопрос или доступные методы/способы его решения в документации по используемому ЯП, в каждой ли книжке или через одну они так или иначе освещены или нигде и никак не раскрыты вовсе.

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

Вам предложили прочитать книги Марка Лутца. Посмотрел, какие есть книги этого автора. Мужик, наверняка, толковый, если ему есть что сказать в толстых многотомных изданиях. На его книги ссылаются, как на полезные. Притом, как для начального, так и для углубленного изучения ЯП. Считаю, есть смысл перенять хотя бы часть его знаний.

Так и что удалять предлагаете - Ваши хамские посты или предложения в Ваш адрес успокоиться и извиниться? Уточните.


Если незнание языка Python не позволяет тебе профессионально модерировать данный ресурс, то зачем ты этим занимаешься?

Насчет Лутца: с удовольствием прочитаю его книгу (да и другие тоже), если напишешь страницу на которой рассмотрен вопрос логирования. Если посмотришь историю моих сообщений, то я достаточно часто привожу ссылки на книги с указанием номера страниц, на которых рассмотрен тот или иной вопрос (так что этот камень явно не в мой огород). А пока подобного уточнения нет, ты и я отлично понимаем, что это по сути посыл человека на х.й. И непонятно почему ты защищаешь участников форума, которые посылают других?
11 фев 19, 09:16    [21806064]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
vkle
...
Ну Вы как в детском саде, ей Богу. Вас надо учить общаться? Извините, вот мне не хочется. Вас, простите, "заклевывают" - где и как? Вы сами избрали для себя такую роль своим же поведением.

Вам что-то ответили. Ответ может быть "в тему" или "не в тему". Ответов "не в тему", притом, без злого умысла, довольно много, кстати, так как вопросы, порой, весьма неоднозначно трактуются. Что можно сделать с ответом "не в тему"?

Проигнорировать - наверно, самое простое. Вообще ничего не делать. Нет ответа - нет продолжения развития "не в тему".
...


Я правильно понимаю, что вы как модератор отказываетесь выполнять свои функции, рассчитывая на то, что люди будут игнорировать сообщения "не в тему"?
11 фев 19, 09:53    [21806091]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL_2,

Дорогой Алексей!
Вы, честно говря, несколько заколебали своей простотой. Давайте начнем с того, что Лутца я вам рекомендовал читать, после того, как вы заявили своё желание декорировать отдельные строки кода. Эти ваши случайные слова наглядно демонстрируют ваше знание питона - вы, по крайней мере до момента написания поста, понятия не имели как работают декораторы и зачем они нужны. Именно это я и констатировал - учебник вы не читали. И на каждый вашу следущую глупость я буду реагировать именно так, и моя реакция есть следствие того, как вы усирались, доказывая лично мне, что именно вы как никто другой разбираетесь в дизайне языков программирования, умеете писать чистый код и вообще много и глубоко знаете в прграммировании. За эту вашу самоуверенность и норсорожью упертость я буду тыкать вас носом у чебник при каждой вашем появлении на форуме.

А теперь мы разберем текущий топик по строкам. Ваш стартовый пост:
автор
Логирование отдельных строк сильно испортит код, а логирование целых функций можно сделать с помощью декораторов. Но:
а) В случае падения мы потеряем весь лог, полученный при работе функции и разобраться в причинах падения будет сложно.

То есть вы с самого начала хотели логгировать построчное выполнение кода. Для этого вы выдумывали декораторы строк и построчные комментарии. Что же мы видим в конце ваших изысканий?
"В результате пришел к такому варианту" (с)
Отлично! Вы пришли к варианту, который вашу изначальную задачу не решает от слова совсем. Давайте посмотрим, что вам предлагал я вот здесь 21804675. Даже не зная языка абсолютно, невооруженным глазом видно, что это есть ровно то, что вы заявляли в стартовом посте. За это я получил поток оскорблений, а мое решение названо оффтопом.
У тут, собственно, вопрос - у вас шизофрения? Я так полагаю, и это мнение уже высказывалось, что вы ходите сюда просто потрепаться, вам не нужны решения, ответы, советы. Вам нужен срач. Так вот: срача не будет и вас тут не будет. Вы уже, видимо, поняли, что я это умею.
11 фев 19, 10:04    [21806105]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
Лысый дядька, ты же вроде ушел, когда на мое сообщение, что ты выродок и мне не нужна твоя "помощь", ответил "AlekseySQL, ну как хочешь". Получается ты это про себя написал?

Лысый дядька
Этот человек ходит сюда не за советом, а просто потому что ему не с кем поговорить за ИТ. Программистом он не работает, по специальности не учится, он энтузиаст самоучка, что, безусловно, похвально, но у него есть потребность кому-то рассказать о том, как он крут и начитан. Его друзьям это не надо, родителям и родственникам тоже пофигу, да с ними и неинтересно. Вот и нашел себе человек площадку для бесед на отвлеченные темы, а вдруг оказалось, что он вовсе не крут и не очень то начитан. А критику воспринимать не готов, то ли в силу малого возраста, то ли мозгов маловато. Ему на ПТ, но ПТ джудж слил. Его, конечно, жалко, но что теперь делать? Это, как правильно заметили, форум специалистов, а не лига помощи скучающим подросткам.
11 фев 19, 10:10    [21806107]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL_2,

Ну это же не учебник Лутца, это форум, его даже качать не надо. Почитайте еще раз, только внимательно, на что конкретно я вам ответил "ну как хочешь".
Но на самом деле это не важно. Мы на форуме и у форума есть конкретная тема, которая важнее всех остальных перепалок. Итак, скажите еще раз, только внятно и разборчиво, без обвинения меня в фашизме: модуль trace из стандартной библиотеки питона решает вопрос построчного логгирования хода выполнения программы или нет?
11 фев 19, 10:29    [21806128]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34424
AlekseySQL
Хочется в случае падения обработки (которая будет работать очень долго) понять почему это произошло. Поэтому решил внедрить логирование текущего хода работы.

Есть две основные дилеммы:

1. Красота кода / полнота лога.
Можно было бы создать отдельный слой бизнес- логики, на котором происходит логирование, но в этом случае я не увижу деталей (поскольку на таком верхнем уровне можно только в целом сказать: то- то сделать удалось / не удалось). Но если реализовывать на уровне прикладной логики, то за всеми этими сообщениями об ошибках / успехах не видно основной логики и потому уродуется код.

2. Красота кода / отказоустойчивость лога
Логирование отдельных строк сильно испортит код, а логирование целых функций можно сделать с помощью декораторов. Но:
а) В случае падения мы потеряем весь лог, полученный при работе функции и разобраться в причинах падения будет сложно.
б) Долго работающая функция из- за подобного лога отъест много памяти.

Что используете?


Стратегий логирования есть только две: логировать и не логировать.
Так что бери логирующий фреймворк что доступен в твоей архитектуре и вперёд.


Логирование отдельных строк сильно испортит код, а логирование целых функций можно сделать с помощью декораторов.

Да логируй хоть как-то , ничто ничего не испортит.

а) В случае падения мы потеряем весь лог, полученный при работе функции и разобраться в причинах падения будет сложно.

что за логи-то у тебя такие, которые теряются? Что за бредняк? Нет таких логов... Если у тебя так -- бери другую библиотеку логирования. Логирование должно быть синхронным и с flush-ем.

б) Долго работающая функция из- за подобного лога отъест много памяти.


Логирование не есть память. Только замедляет работу немного.
Но у тебя дилемма простая: "сделать медленнее с логированием и что-то понимать", " не сделать вообще без логирования и нихрена не понимать что происходит".
11 фев 19, 11:47    [21806203]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
Лысый дядька
AlekseySQL_2,

Ну это же не учебник Лутца, это форум, его даже качать не надо. Почитайте еще раз, только внимательно, на что конкретно я вам ответил "ну как хочешь".
Но на самом деле это не важно. Мы на форуме и у форума есть конкретная тема, которая важнее всех остальных перепалок. Итак, скажите еще раз, только внятно и разборчиво, без обвинения меня в фашизме: модуль trace из стандартной библиотеки питона решает вопрос построчного логгирования хода выполнения программы или нет?


Что такая скучная жизнь, раз не можешь спокойно уйти из моей темы?
У Лутца книги размером 1280, 992 и 993 страниц. Но дело не в этом, а в том, что программирование не изучается теоретически. И ты это отлично знаешь и потому тут в качестве ржача тыкаешь этими книгами, в ни одном из которых не рассмотрен вопрос из топика. Тоже касается твоего trace: прочитай топик и подумай решает ли это поставленную задачу.
11 фев 19, 11:58    [21806218]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
автор
Что такая скучная жизнь, раз не можешь спокойно уйти из моей темы?

Моя жизнь - не предмет обсуждения, я же не задаю на форумах вопросы, как мне справится со своей жизнью.

AlekseySQL_2
Тоже касается твоего trace: прочитай топик и подумай решает ли это поставленную задачу.

Я крепко подумал и решил, что таки ДА, решает. Вы хотели получить построчный трейс программы, для этих целей вы изобретали декораторы строк, спецкомментарии и даже препроцессор. Модуль трейс делает ровно то, что вы хотели - трассирует программу. Теперь вы должны ответить, почему это решение вас не устраивает. Так работает вообще любой разговор - вопрос -> ответ, теза -> антитеза, утверждение ->согласие или контрутверждение. Создается ощущение, Алексей, что вы не хотите принимать решение потому, что его вам дал именно я. Но оно то от этого не стало хуже. Вперед, Алексей, хватит образцово показательно тупить.
11 фев 19, 12:08    [21806227]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
MasterZiv
что за логи-то у тебя такие, которые теряются? Что за бредняк? Нет таких логов... Если у тебя так -- бери другую библиотеку логирования. Логирование должно быть синхронным и с flush-ем.

б) Долго работающая функция из- за подобного лога отъест много памяти.

Логирование не есть память. Только замедляет работу немного.
Но у тебя дилемма простая: "сделать медленнее с логированием и что-то понимать", " не сделать вообще без логирования и нихрена не понимать что происходит".


Спасибо, за беседу по теме.
Тут подразумевалось, что если я логирую выполнение всей функции ЦЕЛИКОМ (чтобы ради красоты вынести весь код в декоратор) то должен накапливать лог- сообщения этой функции в какую- то коллекцию. Поэтому если в течении выполнения этой функции появится ошибка, то мы потеряем уже накопленные сообщения + коллекция с сообщениями может вырасти в размерах.

Если же начинаем сразу логировать отдельные строки, то это портит код. Собственно поэтому дихотомия задана как "Красота кода / отказоустойчивость лога".

Сейчас я остановился на решении с выносом всех логируемых операций в отдельные функции и использование декораторов.
11 фев 19, 12:09    [21806229]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
AlekseySQL_2
Member [заблокирован]

Откуда:
Сообщений: 17
Лысый дядька
Вы хотели получить построчный трейс программы....


Где я этого хотел? Модератор, неужели ты не видишь, что этот троллинг растянулся на три страницы? Начни работать по своей прямой обязанности. Ты понимаешь, что именно из- за тебя на на форуме невозможно обсуждать серьезные вопросы и люди уходят?
11 фев 19, 12:12    [21806234]     Ответить | Цитировать Сообщить модератору
 Re: Какие есть стратегии логирования хода выполнения длительных расчетов?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL_2
Где я этого хотел? Модератор, неужели ты не видишь, что этот троллинг растянулся на три страницы? Начни работать по своей прямой обязанности. Ты понимаешь, что именно из- за тебя на на форуме невозможно обсуждать серьезные вопросы и люди уходят?


Тише, Алеша! Выпейте галоперидолу, посчитайте до тысячи глубоко дыша и успокойтесь. Теперь давайте вместе (можно даже привлечь широкую общественность в качестве арбитров) почитаем, что же вы писали нам намедни:

AlekseySQL
Логирование отдельных строк сильно испортит код, а логирование целых функций можно сделать с помощью декораторов.

AlekseySQL
Я спрашиваю существуют ли языковые средства, чтобы это сделать [Логирование отдельных строк].

AlekseySQL
Я сейчас в качестве оптимального решения вижу комментарий, расположенный на строке логируемого кода или декоратор перед строкой кода. Это позволит логировать детально


Алексей, нука соберитесь!!! Вы сможете, вы преодолеете!
11 фев 19, 12:22    [21806250]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / PHP, Perl, Python Ответить