Иногда у нас есть конфигурации в web.config, которые ИТ-специалисты изменяют на действующих производственных серверах. Я хочу создать контрольный журнал, например: «11 октября свойство« foo »в файле« bar »было изменено на« banana ».
Моей первой мыслью было создать сценарий PowerShell, который будет запускаться каждый час, и если один из файлов .config изменится, сохранить его в папке с отметкой времени. Вторая мысль заключалась в том, что это, должно быть, проблема, которая уже решена.
В идеале изменения конфигурационного файла не допускаются, и любое изменение потребует нового развертывания, но вряд ли я смогу протолкнуть это.
Я говорю "web.config", но у меня есть несколько разных файлов конфигурации xml: web.config, app.config, nant.configs.
Мне нужно точно знать, что в этих файлах конфигурации было изменено (приблизительно), когда и (в идеале) кем.
Есть ли какой-нибудь стандартный способ или инструмент с открытым исходным кодом для ведения журнала изменений файлов?
Как упоминалось в комментариях, скорее всего, здесь могут помочь сторонние инструменты. В Windows нет ничего, что позволяло бы делать это прямо из коробки.
Если бы мне пришлось делать это самому, я бы сделал что-то вроде этого:
Напишите небольшой инструмент для наблюдения за файлами. Это будет использовать объект FileSystemWatcher. На NTFS-дисках изменение отслеживаемого файла автоматически запускает событие.
Код для события просто скопирует файл в другое место, которое находится под контролем источника (скажем, Git), и запустит фиксацию и, возможно, отправку на удаленный сервер.
Используя это, вы можете увидеть, что именно изменилось в файле.
Кроме того, вы можете включить аудит Windows для файлов, чтобы узнать, кто внес изменения.
Я бы не стал писать этот инструмент в PowerShell, но как службу Windows, которая работает в фоновом режиме и отслеживает изменения в реальном времени.