мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
lib.py:aw_log:api [30.10.2024 16:23] awgurlib.py:aw_log:api [03.11.2024 16:45] (текущий) awgur
Строка 6: Строка 6:
  
  
-====== alert, err, warn, debug ======+====== alert(), err(), warn(), debug() ======
  
 Данные методы позволяют зарегистрировать в журнале события с соответствующим уровнем важности. Данные методы позволяют зарегистрировать в журнале события с соответствующим уровнем важности.
Строка 21: Строка 21:
  
 <code> <code>
-err(msg)+obj.err(msg)
 </code> </code>
  
 Метод ничего не возвращает. Метод ничего не возвращает.
  
-''msg'' - регистрируемое сообщение с типом ''str''+^ Параметр ^ Тип ^ Описание ^ 
 +''msg'' | ''str'' | Регистрируемое сообщение |
  
  
Строка 40: Строка 41:
  
  
-====== sub_log ======+====== sub_log() ======
  
 +Метод возвращает объект журнала аналогичного типа.
  
 +При этом префикс, заданный при вызове метода, добавляется к родительскому по схеме:
 +<code bash>
 +${parent_prefix}/${child_prefix}
 +</code>
 +
 +Удобно для передачи объекта потомкам или рабочим процессам.
 +
 +<code>
 +obj.sub_log(name)
 +</code>
 +
 +**Возвращает:** Объект журнала с тем же классом что и вызывающий объект, но с дополненным префиксом
 +
 +^ Параметр ^ Тип ^ Описание ^
 +| ''name'' | ''str'' | Идентификатор потомка, добавляемый к префиксу родителя в создаваемом объекте журнала |
 +
 +
 +====== get_timing() ======
 +
 +Возвращает [[.:timer|таймер]] для выполнения измерения времени.
 +
 +<code>
 +obj.get_timing([name])
 +</code>
 +
 +**Возвращает:** Объект класса ''Timing''
 +
 +^ Параметр ^ Тип ^ Описание ^
 +| ''name'' | ''str'' | Идентификатор таймера, если не указан, выводится не будет |
 +
 +
 +====== excpt() ======
 +
 +Обработка исключений.
 +
 +Данная обработка полезна в том смысле, что исключение несёт в себе множество дополнительной информации, которую хотелось бы поместить в журнал:
 +  * Тип исключения
 +  * Трассировка стека вызовов
 +
 +И не ломать при этом структуру журнала, чтобы всё это не выглядело как стандартная простынь ошибки Java или иного ООП, где сложно понять где начало и где конец.
 +
 +<code>
 +obj.excpt(msg, [e_class], [e_obj], [e_tb], [stack_skip]):
 +</code>
 +
 +Метод ничего не возвращает
 +
 +^ Параметр ^ Тип ^ Описание ^
 +| ''msg'' | ''str'' | Сообщение. Оно выводится перед результатом разбора элементов исключения и позволяет определиться с ситуацией, в которой оно произошло. |
 +| ''e_class'' | Класс потомок от ''Exception()'' | Класс исключения. Нужен только при применении метода в рамках менеджера контекста или иного средства отложенной обработки исключений. |
 +| ''e_obj'' | Объект класса ''e_class'', заданного выще | Объект исключения. Требуется в случаях аналогичных ''e_class''. |
 +| ''e_tb'' | ''tuple'' | Стек вызова в момент исключения. Требуется в случаях аналогичных ''e_class''. |
 +| ''stack_skip'' | ''int'' | Количество вызовов в стеке, которое необходимо скрыть. Эта возможность относится не к стеку, выданному исключением, а второй части стека, который строит сам метод относительно главной процедуры приложения. Это полезно для понимания положения самого обработчика исключения в приложении. То есть, этот параметр позволяет скрыть из логов некоторое количество вызовов, если они не желательны или не важны для понимания источника ошибки. |
 +
 +Пример. Для кода:
 +<code python>
 +log = StderrLog()
 +
 +try:
 +    1 / 0
 +    
 +except:
 +    log.excpt('Ошибка')
 +</code>
 +
 +Будет сгенерирован вывод подобный данному:
 +<code>
 +Mon Jan 01 00:00:23 1970 | # main | Ошибка
 +Mon Jan 01 00:00:23 1970 | # main | --- EXCEPTION ---
 +Mon Jan 01 00:00:23 1970 | # main |  ZeroDivisionError (division by zero)
 +Mon Jan 01 00:00:23 1970 | # main | --- TRACEBACK ---
 +Mon Jan 01 00:00:23 1970 | # main | File: <input>, line 2 in <module>
 +Mon Jan 01 00:00:23 1970 | # main |    
 +Mon Jan 01 00:00:23 1970 | # main | >>> Exception Handler <<<
 +Mon Jan 01 00:00:23 1970 | # main | File: ./pydevconsole.py, line 364 in runcode
 +Mon Jan 01 00:00:23 1970 | # main |    coro = func()
 +Mon Jan 01 00:00:23 1970 | # main | File: /usr/lib/python3.12/code.py, line 74 in runsource
 +Mon Jan 01 00:00:23 1970 | # main |    self.runcode(code)
 +Mon Jan 01 00:00:23 1970 | # main | File: ./_pydev_bundle/pydev_console_types.py, line 35 in run
 +Mon Jan 01 00:00:23 1970 | # main |    self.more = self.interpreter.runsource(text, '<input>', symbol)
 +Mon Jan 01 00:00:23 1970 | # main | File: ./pydevconsole.py, line 93 in do_add_exec
 +Mon Jan 01 00:00:23 1970 | # main |    command.run()
 +Mon Jan 01 00:00:23 1970 | # main | File: ./_pydev_bundle/pydev_code_executor.py, line 109 in add_exec
 +Mon Jan 01 00:00:23 1970 | # main |    more, exception_occurred = self.do_add_exec(code_fragment)
 +Mon Jan 01 00:00:23 1970 | # main | File: ./pydevconsole.py, line 287 in process_exec_queue
 +Mon Jan 01 00:00:23 1970 | # main |    interpreter.add_exec(code_fragment)
 +Mon Jan 01 00:00:23 1970 | # main | File: ./pydevconsole.py, line 498 in start_client
 +Mon Jan 01 00:00:23 1970 | # main |    process_exec_queue(interpreter)
 +Mon Jan 01 00:00:23 1970 | # main | File: ./pydevconsole.py, line 570 in <module>
 +Mon Jan 01 00:00:23 1970 | # main |    pydevconsole.start_client(host, port)
 +Mon Jan 01 00:00:23 1970 | # main | --- END EXCEPTION ---
 +</code>
 +
 +Как уже отмечалось, метка ''>>> Exception Handler <<<'' позволяет определить вызов метода ''excpt()'' относительно всего приложения и более точно определить источник проблемы.