Я использую модуль logging
для регистрации сообщений с сервера приложений. Более конкретно, я использую StreamHandler для регистрации сообщений в stdout/stderr и используйте Supervisord
для регистрации этих сообщений в файлах (поскольку серверный процесс контролируется Supervisord
).Гарантирован ли хронологический порядок протоколирования сообщений?
Мой главный вопрос: действительно ли порядок сообщений в файле журнала всегда правдиво отражает порядок выполнения кода? Например, если сообщение A: this is log msg A
появляется перед сообщением B: this is log msg B
в файле журнала, то можем ли мы быть на 100% уверены, что строка кода, которая регистрирует сообщение A
, была выполнена перед строкой кода, который регистрирует сообщение B
, даже если метки времени два сообщения в файле журнала одинаковы?
Вы используете нить? Тогда да, записи журнала будут введены в файл в том порядке, в котором его испускал код. При использовании резьбы вступает в действие блокировка, и побеждает нить, у которой есть блокировка. Даже тогда сообщения журнала из того же потока никогда не будут выписаны в другом порядке, они просто будут смешиваться с сообщениями из других потоков. –