Почему бы не создать функцию-оболочку для каждого типа событий журнала?
Если ваша исходная функция log
и используется так:
log("user", "is a zombie");
, это можно переписать как:
logUser("is a zombie");
, где logUser
просто вызывает log
с параметром user
.
Еще один путь - сделать log
объектом с различными функциями, поэтомувы можете использовать его следующим образом:
log.user("is a zombie");
и т. д.
Разработчики, использующие ваш механизм ведения журнала, не должны беспокоиться о его внутренностях, так как мы имеем дело с системой ведения журнала здесьСуществует ограниченное количество типов журналирования, поэтому, если вы заранее представите хорошо продуманный список типов журналирования, которые существуют в базе данных и не нуждаются в изменении, тогда не должно быть беспокойства о том, что что-то может произойти в будущем..
Редактировать (на основе комментария):
Из вашего вопроса я вижу две таблицы, EventLog
и EventTypes
.Я предполагаю, что EventLog
имеет два столбца:
, в то время как EventTypes
также имеет два столбца:
- eventId
- eventDescription.
Этот кусочек информации озадачивает меня, и я цитирую:
теперь разработчики должны идти в ногус изменениями в таблице EventLog
Насколько я понимаю, целью этой таблицы является хранение информации о различных событиях и их типах.Эта таблица будет меняться в том смысле, что строки будут добавляться каждый раз, когда регистрируется событие.Здесь нет структурных изменений.
Таблица EventTypes
может измениться, а также добавить новые типы событий.Это также означает, что строка может быть добавлена.
Обе таблицы не будут изменены таким образом, что их столбцы будут добавлены или удалены.
EventTypes
более или менее "исправлено"и каждый тип события связан с числом.Этот номер должен быть «соглашением» между вашей базой данных и вашим Javascript.
Итак, если у вас есть три строки, подобные этой:
- 1 |отладка
- 2 |информация
- 3 |user
тогда у вас также должно быть три функции, подобные этой:
- log.debug
- log.info
- log.user
и каждый из них должен позвонить в ваш веб-сервис с соответствующим номером.Это ваше соглашение.
Если добавлен новый тип события, теперь у вашей таблицы есть новая строка, подобная этой:
, затем вы должны добавить новую функцию для ваших разработчиков:
Таким образом, нет "взлома"изменения ", так как добавлен новый функционал и ничего старого не сломано в процессе.Предполагая, что ваша схема нумерации не меняется.
Вы просто говорите своим разработчикам «у вас теперь есть новая функция, все остальное будет работать так же, как раньше», и вы продолжаете свой бизнес.