4

我想做一些简单的调试,Azure WebJobs 似乎不再支持 Console.Writeline。

我知道使用 TextWriter 类是答案,我只是将它注入我的方法中。我不明白的是我如何称呼该方法。我不能使我的 Main 方法签名无效并将其注入那里。

请问我错过了什么?

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

3 回答 3

5

对于连续网络作业,您可以这样做:

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)
    {

    }
}
于 2015-12-15T00:18:59.220 回答
4

虽然以上是正确的,但您还可以创建自己的自定义 TraceWriter 实例来拦截应用程序中的 Trace 调用。

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
        }
    }
}

然后在 JobHostConfuration 设置中,在控制台应用程序的 main 方法中注册 TraceWriter 类的实例。即在 Program.cs 中。

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();

通过这种方式,您可以对跟踪执行其他操作,例如写入外部服务或创建警报。

取自Azure SKD 示例 Github

CustomTraceWriter.cs

程序.cs

于 2016-04-05T10:19:09.503 回答
2

我相信您需要在签名中添加一个 QueueTrigger 属性,Azure 会在事件发生时调用它。例如:

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

请参阅此链接:https ://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#trigger

于 2015-06-03T20:30:31.280 回答