Я сомневаюсь, что есть какое-либо общее решение этой проблемы.
Вы можете выкатить свой собственный. Начните с рассмотрения всех объектов, которые нуждаются в регистрации изменений. Сколько существует типов? Как часто вы ожидаете изменений? Это поможет вам оценить потенциальное количество изменений производительности, с которыми вам придется иметь дело. Если их не так много, просто вставьте их в базу данных. Если вы генерируете много, попробуйте сохранить файл с разделенными запятыми значениями.
Я уже реализовывал подобную систему. У меня было 3 типа изменений: 1) изменение значения свойства, 2) добавление значения в список, 3) удаление значения из списка.
Я использовал следующий формат, сохраненный в файле журнала:
//For type 1)
1,2011/01/01 00:00:00,MyObject,myProperty,oldValue,newValue
//For type 2)
2,2011/01/01 00:00:00,MyObject,myListProperty,addedValue
//For type 3)
3,2011/01/01 00:00:00,MyObject,myListProperty,removedValue
Это захватило большую часть информации, которая мне была нужна. Части value
представляли собой просто читаемую пользователем сводку значения измененного / добавленного / удаленного свойства.