Был полезен (наверное главное применение - tail -f visualizer_debug.log в отдельном окне параллельно с визуализатором), но его было мало и много.
Мало - в смысле не весь отладочный вывод делался через logging, надо больше культуры! В частности, близко к концу контеста кто-то повадился печатать 'None' в stdout, но быстро найти источник не получилось, потом что принтов по коду было много. Может быть это даже я был, так и не знаю.
Много в плане я видел вывод, который был мне неинтересен и вытеснял интересное, приходилось лезть куда-то и отключать. Хотелось бы наоборот, чтобы нужно было беспокоиться только о том что интересно (явно повышая уровень для него, например).
Возможно, для этого стоит зафиксировать рудиментарные соглашения по уровням. Например, по умолчанию везде всегда включен info, совсем специфические вещи идут в debug, и тогда тот кто хочет их увидеть повышает уровнь отдельно для соответствующих модулей. На уровнях info и выше вывода не должно быть слишком много (сложность в том, что "слишком много" для интерпретатора виртуальной машины, для стратегии и для проводилки турниров - это совершенно разные понятия). Альтернативный подход - делать уровни привязанными к объёму вывода (типа "на каждый шаг VM", "на каждый шаг стратегии", "на каждую партию"), проблема в том что их будет слишком много, порядок они будут образовывать только частичный, границы между ними будут нечёткими, и применяться они будут неправильно.
Логгинг одновременно частичный в stderr и полный в файл не пригодился вообще (вероятно, потому что легко было подкрутить уровни и перезапустить). Но в прошлом году, например, когда было взаимодействие с сервером, он очень помогал.
Я ещё попробовал внедрить переизобретённые мной недавно вложенные отладочные контексты log_context.py, но дикой пользы в данном случае от них вроде не было.
Был полезен (наверное главное применение -
tail -f visualizer_debug.log
в отдельном окне параллельно с визуализатором), но его было мало и много.Мало - в смысле не весь отладочный вывод делался через logging, надо больше культуры! В частности, близко к концу контеста кто-то повадился печатать 'None' в stdout, но быстро найти источник не получилось, потом что принтов по коду было много. Может быть это даже я был, так и не знаю.
Много в плане я видел вывод, который был мне неинтересен и вытеснял интересное, приходилось лезть куда-то и отключать. Хотелось бы наоборот, чтобы нужно было беспокоиться только о том что интересно (явно повышая уровень для него, например).
Возможно, для этого стоит зафиксировать рудиментарные соглашения по уровням. Например, по умолчанию везде всегда включен info, совсем специфические вещи идут в debug, и тогда тот кто хочет их увидеть повышает уровнь отдельно для соответствующих модулей. На уровнях info и выше вывода не должно быть слишком много (сложность в том, что "слишком много" для интерпретатора виртуальной машины, для стратегии и для проводилки турниров - это совершенно разные понятия). Альтернативный подход - делать уровни привязанными к объёму вывода (типа "на каждый шаг VM", "на каждый шаг стратегии", "на каждую партию"), проблема в том что их будет слишком много, порядок они будут образовывать только частичный, границы между ними будут нечёткими, и применяться они будут неправильно.
Логгинг одновременно частичный в stderr и полный в файл не пригодился вообще (вероятно, потому что легко было подкрутить уровни и перезапустить). Но в прошлом году, например, когда было взаимодействие с сервером, он очень помогал.
Я ещё попробовал внедрить переизобретённые мной недавно вложенные отладочные контексты log_context.py, но дикой пользы в данном случае от них вроде не было.