Как мне записать вывод консоли на выполнение размещенных скриптов?

Я использую http://scriptcs.net/ для размещения динамических скриптов, и я хотел бы записать вывод из Console.WriteLine() в мой журнал в качестве информации, а Console.Error.WriteLine() в качестве ошибок. То же, что и в Octopus Deploy для создания пользовательских сценариев.

Причина, по которой я хотел бы получить выходные данные Console.WriteLine(), состоит в том, чтобы облегчить авторам сценариев регистрацию информации с помощью знакомого инструмента.

Вот моя функция размещения скриптов:

    public static dynamic RunScript()
    {
        var logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        var scriptServicesBuilder = new ScriptServicesBuilder(new ScriptConsole(), logger).
            LogLevel(LogLevel.Info).Cache(false).Repl(false).ScriptEngine<RoslynScriptEngine>();

        var scriptcs = scriptServicesBuilder.Build();

        scriptcs.Executor.Initialize(new[] { "System.Web" }, Enumerable.Empty<IScriptPack>());
        scriptcs.Executor.AddReferences(Assembly.GetExecutingAssembly());

        var result = scriptcs.Executor.Execute("Hello.csx");

        scriptcs.Executor.Terminate();

        if (result.CompileExceptionInfo != null)
            return new { error = result.CompileExceptionInfo.SourceException.Message };
        if (result.ExecuteExceptionInfo != null)
            return new { error = result.ExecuteExceptionInfo.SourceException.Message };

        return result.ReturnValue;
    }

Содержимое моего файла Hello.csx:

Console.WriteLine("This output is lost forever");

Итак, мой вопрос, как я могу захватить текст, записанный в Console.WriteLine(), и сохранить его?

0 ответов

Другие вопросы по тегам