Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将.Net TextWriter与Azure WebJobs一起使用_C#_Azure_Azure Webjobs_Textwriter - Fatal编程技术网

C# 如何将.Net TextWriter与Azure WebJobs一起使用

C# 如何将.Net TextWriter与Azure WebJobs一起使用,c#,azure,azure-webjobs,textwriter,C#,Azure,Azure Webjobs,Textwriter,我想做一些简单的调试和控制台。Azure WebJobs似乎不再支持Writeline 我知道使用TextWriter类就是答案,我只是将它注入到我的方法中。我不明白的是我怎么称呼这个方法。我不能使我的主方法签名无效并将其注入其中 请问我错过了什么 public static void Main(TextWriter log) { //This is is not valid } 我认为您需要向签名添加QueueTrigger属性,Azure将在事件发生时调用它。例如: public

我想做一些简单的调试和控制台。Azure WebJobs似乎不再支持Writeline

我知道使用TextWriter类就是答案,我只是将它注入到我的方法中。我不明白的是我怎么称呼这个方法。我不能使我的主方法签名无效并将其注入其中

请问我错过了什么

public static void Main(TextWriter log)
{
    //This is is not valid
}

我认为您需要向签名添加QueueTrigger属性,Azure将在事件发生时调用它。例如:

public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage, TextWriter logger)
{
    logger.WriteLine(logMessage);
}

请参阅此链接:

对于Continuous webjob,您可以这样做:

class Program
{
    private static void Main()
    {
        var host = new JobHost();
        host.Call(typeof(Program).GetMethod("Start"));
        host.RunAndBlock();
    }

    [NoAutomaticTrigger]
    public static void Start(TextWriter textWriter)
    {

    }
}

虽然上述内容正确,但您也可以创建自己的自定义TraceWriter实例,用于拦截应用程序中的跟踪调用

TraceWriter类的示例:

using System.Diagnostics;
using Microsoft.Azure.WebJobs.Host;

namespace MiscOperations
{
    /// <summary>
    /// Custom <see cref="TraceWriter"/> demonstrating how JobHost logs/traces can
    /// be intercepted by user code.
    /// </summary>
    public class CustomTraceWriter : TraceWriter
    {
        public CustomTraceWriter(TraceLevel level)
            : base(level)
        {
        }

        public override void Trace(TraceEvent traceEvent)
        {
            // handle trace messages here
        }
    }
}
通过这种方式,您可以对跟踪执行其他操作,例如写入外部服务或创建警报

摘自


您可以通过visual studio进行调试,我使用Console.Writeline,它工作正常。显然,一段时间后,SCM站点上的输出窗口将满,您将看不到更多行。但是对于小而简单的“调试”来说,这是可以的。我知道,Writeline很好用,谢谢。我以为每次我发表它都会重新开始我的网络工作。事实并非如此,因此我所做的更改(使用Console.Writeline)没有运行。如果有人能告诉我如何使用这个文字书写器,我仍然很感兴趣。
JobHostConfiguration config = new JobHostConfiguration()
{
    NameResolver = new ConfigNameResolver(),
};

// Demonstrates how the console trace level can be customized
config.Tracing.ConsoleLevel = TraceLevel.Verbose;

// Demonstrates how a custom TraceWriter can be plugged into the
// host to capture all logging/traces.
config.Tracing.Tracers.Add(new CustomTraceWriter(TraceLevel.Info));

JobHost host = new JobHost(config);
host.RunAndBlock();