Vlad-Shcherbina / icfpc2014-tbd

fourth place
Do What The F*ck You Want To Public License
4 stars 0 forks source link

Логгинг #37

Open Vlad-Shcherbina opened 10 years ago

Vlad-Shcherbina commented 10 years ago

Был полезен (наверное главное применение - tail -f visualizer_debug.log в отдельном окне параллельно с визуализатором), но его было мало и много.

Мало - в смысле не весь отладочный вывод делался через logging, надо больше культуры! В частности, близко к концу контеста кто-то повадился печатать 'None' в stdout, но быстро найти источник не получилось, потом что принтов по коду было много. Может быть это даже я был, так и не знаю.

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

Возможно, для этого стоит зафиксировать рудиментарные соглашения по уровням. Например, по умолчанию везде всегда включен info, совсем специфические вещи идут в debug, и тогда тот кто хочет их увидеть повышает уровнь отдельно для соответствующих модулей. На уровнях info и выше вывода не должно быть слишком много (сложность в том, что "слишком много" для интерпретатора виртуальной машины, для стратегии и для проводилки турниров - это совершенно разные понятия). Альтернативный подход - делать уровни привязанными к объёму вывода (типа "на каждый шаг VM", "на каждый шаг стратегии", "на каждую партию"), проблема в том что их будет слишком много, порядок они будут образовывать только частичный, границы между ними будут нечёткими, и применяться они будут неправильно.

Логгинг одновременно частичный в stderr и полный в файл не пригодился вообще (вероятно, потому что легко было подкрутить уровни и перезапустить). Но в прошлом году, например, когда было взаимодействие с сервером, он очень помогал.

Я ещё попробовал внедрить переизобретённые мной недавно вложенные отладочные контексты log_context.py, но дикой пользы в данном случае от них вроде не было.