Closed remy90 closed 3 years ago
@remy90 Try this. Don't bother with parameter bindings, inject the logger on the function constructor. I've added a timer to show it working immediately.
class Program
{
static async Task Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console()
.CreateLogger();
IHostBuilder builder = Host.CreateDefaultBuilder(args)
.UseSerilog(Log.Logger)
.ConfigureAppConfiguration(config =>
{
config.AddInMemoryCollection(new Dictionary<string, string>
{
["AzureWebJobsStorage"] = "UseDevelopmentStorage=true",
});
})
.ConfigureServices(s =>
{
s.AddSingleton(Log.Logger);
})
.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
b.AddTimers();
});
IHost host = builder.Build();
try { await host.RunAsync(); }
catch (Exception ex) { Log.Fatal(ex.Message, ex); }
finally { Log.CloseAndFlush(); }
}
}
public class Functions
{
readonly ILogger _logger;
public Functions(ILogger logger) => _logger = logger.ForContext<Functions>();
public void ProcessQueueMessage([QueueTrigger("queue")] string message)
{
_logger.Information(message); // Serilog ILogger
}
public void ProcessTimer([TimerTrigger("0 * * * * *", RunOnStartup = true)] TimerInfo myTimer)
{
_logger.Information(
"C# Timer trigger function executed at: {Now:R}! IsPastDue={IsPastDue}.",
DateTime.UtcNow,
myTimer.IsPastDue);
}
}
I use these packages
<PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.27" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="4.0.1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.4" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
Exactly what I was looking for, thanks!
I'm attempting to add Serilog to an Azure WebJobs sdk project and getting a parameter binding exception:
Here's my repro example:
For completeness, these are the package references: \
\
\
\