Запись в стандартный поток ошибок

C#:
Запись в стандартный поток ошибок

Как это сделать:

В C#, для записи в stderr используйте Console.Error.WriteLine(). Это похоже на Console.WriteLine(), только нацелено на поток ошибок.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Сообщение стандартного вывода."); // Переходит в stdout
        Console.Error.WriteLine("Сообщение об ошибке!"); // Переходит в stderr
    }
}

Пример вывода, когда всё хорошо:

Сообщение стандартного вывода.

Но, если что-то не так, вы увидите:

Сообщение стандартного вывода.
Сообщение об ошибке!

Сообщение об ошибке появляется в консоли или может быть перенаправлено в файл.

Подробнее

Исторически, разделение stdout и stderr восходит к системам Unix, где это позволяло чистую обработку данных и обработку ошибок. В C# (и .NET в целом), Console.Out представляет stdout, в то время как Console.Error представляет stderr.

Вы можете перенаправлять оба потока, используя Console.SetOut() и Console.SetError(). Потоки, такие как FileStream или StringWriter, могут перехватывать вывод для ведения журнала. Это критически важно в сценариях, когда сообщения об ошибках не должны смешиваться с обычными данными, например, когда stdout направляется в другую программу.

Смотрите также