У меня есть пакетный файл, который запускает миграцию FluentMigrator на основе пользовательского ввода. Последний шаг — запустить миграционную программу, как показано ниже:
"%~dp0\FluentMigrator.1.1.2.1\tools\Migrate.exe" /conn "DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%HostName%)(PORT=%ServerPort%))(CONNECT_DATA=(SERVICE_NAME=%ServiceName%)));PASSWORD=%installerUserPW%;PERSIST SECURITY INFO=True;USER ID=%installerUserName%;" /provider oracle /context %installerUserName% /assembly ./bin/Debug/DatabaseMigrations.dll >> install_log.txt
ECHO.
echo ------------------------------------------------------------------------------->> install_log.txt
echo ------------------ Database Setup has executed successfully ------------------ >> install_log.txt
echo ------------------------------------------------------------------------------->> install_log.txt
TYPE install_log.txt
GOTO:EOF
Это работает так, как требуется: приложение Migrate.exe выводит все выходные данные в файл, затем сообщение об успешном выполнении, затем файл записывается на консоль, поэтому есть консоль и копия файла. Но если миграция не удалась, например, если у пользователя нет прав на запись в базу данных, она не работает должным образом. В этом случае сообщение о завершении предполагает, что файл был выполнен правильно. Есть ли способ определить, завершился ли миграцион с ошибкой?
Я хотел бы отобразить:
- Код миграции
- (В случае сбоя) Сообщение об ошибке при сбое
- (иначе) Сообщение об успехе
РЕДАКТИРОВАТЬ: я изначально спрашивал, как отображать как ошибку, так и общий вывод - это было достигнуто с помощью кода >> install_log.txt 2>&1
. Теперь мне просто нужно выяснить, как определить, произошла ли ошибка при миграции.