我正在通过HostBuilder使用 v3 的网络作业。
我必须如何配置记录仪,以便可以使用遥测客户端跟踪在控制台输出中可见并且在azure应用程序服务中可见的跟踪数据 这个webjob正在运行?
我想获得一个ILogger实例,该实例记录到控制台和Azure中。
这行代码:
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("I log only in the console but not azure.");
不会将其数据发送到Azure应用洞察力图表...
我不想使用ILogger和Telemetryclient来记录愚蠢的东西。
var builder = new HostBuilder()
.UseEnvironment("Development")
.ConfigureWebJobs(b =>
{
// Add extensions and other WebJobs services
})
.ConfigureAppConfiguration(b =>
{
// Add configuration sources
})
.ConfigureLogging((context, b) =>
{
// Add Logging Providers
b.AddConsole();
// If this key exists in any config, use it to enable App Insights
string appInsightsKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"]; // taken from the appservice environmentvariable
appInsightsKey = "xxxxxxxx";
if (!string.IsNullOrEmpty(appInsightsKey))
{
// This uses the options callback to explicitly set the instrumentation key.
b.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
}
})
.UseConsoleLifetime();
var host = builder.Build();
// my code like telemetryClient.TrackTrace("show this text in console output AND azure app service where this webjob belongs to")
using (host)
{
host.Run();
}
答案 0 :(得分:0)
如果我误会你,请纠正我。
对于“我想获取一个ILogger实例,该实例将日志记录到控制台并进行蔚蓝”,我使用以下代码:
static void Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
})
.ConfigureAppConfiguration(b =>
{
}
)
.ConfigureLogging((context, b) =>
{
b.AddConsole();
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsights(o => o.InstrumentationKey = instrumentationKey);
}
})
.UseConsoleLifetime();
var host = builder.Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("hello 111111111111111");
using (host)
{
host.Run();
}
}
运行代码后,该消息将登录到控制台和Azure门户中的应用程序见解: