2015-03-24 56 views
2

我想進行一些簡單的調試,並且Console.Writeline似乎不再受Azure WebJobs支持。如何在Azure WebJobs中使用.Net TextWriter

我知道使用TextWriter類是答案,我只是將它注入我的方法。我不明白的是我怎麼稱呼這種方法。我不能使我的Main方法簽名失效並將其注入到那裏。

我錯過了什麼?

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

兩者可以通過視覺工作室http://blogs.msdn.com/b/webdev/archive/2014/11/12/new調試-developer-and-debugging-features-for-azure-webjobs-in-visual-studio.aspx – Aravind 2015-03-25 06:45:51

+0

我使用Console.Writeline,它工作的很好。很顯然,在一段時間後,SCM站點上的輸出窗口將會滿了,你會沒有看到更多的線條。但對於小而簡單的「調試」,它很好。恕我直言 – 2015-03-25 08:14:33

+0

Console.Writeline確實工作正常,謝謝。 我以爲每次發佈它都會重新啓動我的Web作業。它不是,所以我正在做的改變(使用Console.Writeline)我們沒有被運行。 如果有人能告訴我如何使用TextWriter,我還是會感興趣的。 – 2015-03-26 12:52:00

回答

3

對於連續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) 
    { 

    } 
} 
2

雖然以上是正確的,你也可以創建自己的自定義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 
     } 
    } 
} 

然後在你的JobHostConfuration設置您註冊您的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 Samples Gitthub

CustomTraceWriter.cs

Program.cs