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