c++ Как организовать бинарный лог (журнал)
Я бы не стал городить велосипеды, а использовал что-нибудь готовое. Например google-protobuf.
За наводку спасибо - поизучаю
Однако, полагаю, что помимо механизма сериализации/десерализации одной записи, тебе потребуется механизм записи последовательности сериализованных записей. А вот тут всё зависит от требований: нужно ли сжатие на лету? если да, то сжатие по одной записи или группами (более эффективно)? захочешь ли ты иметь возможность произвольного доступа, напр. прочитать запись из середины лога? и т.п. Например, в хадупе (ява) есть SequenceFile — тебе нужно что-то похожее, но на плюсах.
Тебя не Леннартом звать, случаем?
Нет, кто это?
Оставить комментарий
Phoenix
Задался вопросом, как можно сделать бинарный лог с фиксированным количеством логгируемых структур, но чтобы новую структуру можно было удобно и быстро добавить при желании, не было дубливания кода, тем более в разных местах и удобно было пользоваться.Пришёл к такому
проблемы:
1. Ничто не мешает определить две структуры с одним LogDataType. Самое неприятное, что обнаружится это только при чтении, а запишется всё ок.
2. приходится определять конструктор, есть шанс забыть добавить туда какое-нибудь поле. Не так страшно, но всё равно лишние повторения.
3. Что если надо добавить/удалить поле в структуре? Тогда новые и старые структуры не будут читаться одновременно (by )
Можно как-нибудь избавиться от этих проблем, не создав новых?