Как записать в файл лога только ошибки?
Вероятно вы уже встречали не совсем очевидные знаки типа 2>&1
Давайте разберемся что это и как этим пользоваться.
Что бы понимать какие вообще есть потоки, приведу следующую таблицу:
0 | stdin | Стандартный ввод |
1 | stdout | Стандартный вывод |
2 | stderr | Стандартный вывод ошибок |
В Powershell существует больше потоков
Для перенаправления потока
используется комбинация знаков «больше» и амперсанд: >&
Пример:
1 |
taskkill -im programm.exe 2>&1 |
Варианты перенаправления
Перенаправление в файл
Для перенаправления в файл не нужно указывать знак & — он используется только при перенаправлении одного потока в другой
1 |
команда 2> файл |
Перенаправление потока в другой поток
1 |
команда 2>&1 |
Таким образом мы перенаправляем более узкий набор данных(поток ошибок) в более общий(стандартный поток вывода), что бы направить в файл всю имеющуюся информацию, которую в последствии можно использовать для отладки.
Использование конструкции 1>&2 не предусмотрено, так как не имеет смысла.
Перенаправление с добавлением
Одинарный знак «>» заменяется на двойной и позволяет записывать вывод потока в конец файла
1 |
команда 2>> файл |