Я хотел бы отправить трассировку и другие события как ILogger
, так и сведениям о приложении.
Я знаю, что могу просто сделать это:
[FunctionName ("OnSomethingHttpTriggered")]
public static async System.Threading.Tasks.Task RunAsync ([QueueTrigger ("myq", Connection = "StorageAccountConnection")] string payload, ILogger log) {
var telemetry = new TelemetryClient {
InstrumentationKey = Environment.GetEnvironmentVariable ("APPINSIGHTS_INSTRUMENTATIONKEY")
};
log.LogInformation ($"C# Queue trigger function processed: {payload}");
telemetry.TrackEvent ($"C# Queue trigger function processed: {payload}");
var isPayloadValidSchema = SchemaValidator.IsValid (payload);
if (!isPayloadValidSchema) {
log.LogError ($"This visit is not valid {payload}");
telemetry.TrackEvent ($"This visit is not valid {payload}");
return;
}
}
Но, как вы видите, мне нужно будет удваивать свой код каждый раз для ILogger
и TelemetryClient
.
Как мне избежать этого повторения?