我想進行一些簡單的調試,並且Console.Writeline似乎不再受Azure WebJobs支持。如何在Azure WebJobs中使用.Net TextWriter
我知道使用TextWriter類是答案,我只是將它注入我的方法。我不明白的是我怎麼稱呼這種方法。我不能使我的Main方法簽名失效並將其注入到那裏。
我錯過了什麼?
public static void Main(TextWriter log)
{
//This is is not valid
}
我想進行一些簡單的調試,並且Console.Writeline似乎不再受Azure WebJobs支持。如何在Azure WebJobs中使用.Net TextWriter
我知道使用TextWriter類是答案,我只是將它注入我的方法。我不明白的是我怎麼稱呼這種方法。我不能使我的Main方法簽名失效並將其注入到那裏。
我錯過了什麼?
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);
}
對於連續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
}
}
}
然後在你的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();
通過這種方式,您可以使用跟蹤功能做其他事情,例如寫入外部服務或創建警報。
兩者可以通過視覺工作室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
我使用Console.Writeline,它工作的很好。很顯然,在一段時間後,SCM站點上的輸出窗口將會滿了,你會沒有看到更多的線條。但對於小而簡單的「調試」,它很好。恕我直言 – 2015-03-25 08:14:33
Console.Writeline確實工作正常,謝謝。 我以爲每次發佈它都會重新啓動我的Web作業。它不是,所以我正在做的改變(使用Console.Writeline)我們沒有被運行。 如果有人能告訴我如何使用TextWriter,我還是會感興趣的。 – 2015-03-26 12:52:00