我有一个C# GUI应用程序,还支持服务器端脚本的命令行模式。我的应用程序根据输入参数的数量来确定是否大于0,并附加到父控制台上。
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
[STAThread]
static void Main(string[] args)
{
bool runningFromConsole = args.Length > 0 && AttachConsole(ATTACH_PARENT_PROCESS);
if(runningFromConsole)
// Handle input arguments
else
// Launch GUI
}
我能够使用 Console.Out.WriteLine("文本");
成功向控制台写入文本,但如果我使用 Console.Error.WriteLine("文本")
,该行不会作为标准输出 (STDOUT) 或标准错误 (STDERR) 发送到控制台。
在本地运行应用程序时,这不是什么大问题,但在构建服务器上运行时,应用程序返回的记录不被注册。目前,我通过创建一个补充日志文件来解决这个问题,在我的应用程序完成运行后,我会使用 type application.log
将其输出到控制台。
是否有一种方法可以强制将文本打印到控制台并作为 STDOUT/STDERR 发送?