Open johnib opened 6 years ago
I am exactly looking for such feature. Thanx Johnib for posting 👍
I have read that this is coming, or already here?, like a few other improvements to App Insights integration that have gone in recently. (Just searching for the source I saw a month or two back.)
@jeffhollan Please have (whoever recently worked on app insights / functions integration) respond to this issue? I suspect it may be now "Done", but I can't remember where I read it.
Can someone please let us know if we can use ILogger's LogInformation method to log CustomeDimensions in Application insights.
@mayank1495 you cannuse that method and they will go through to app insights as traces
.
And that's fine but if we could add attributes directly to requests
(as customdimensions) they would be much more easily discoverable. Presumably also reduces our app insights bills if we send fewer objects.
I'm really missing the ability to decorate each request with custom dimensions.
@johnib @madhu2a I found this old comment from @lmolkova ... does it work?
https://github.com/Azure/azure-webjobs-sdk/pull/1965#issuecomment-430364439
@ahmedelnably in case he has an answer as well
Activity.Current.Tag(...) seems to work and translates into a custom property on the App Insights side. Would be good to have confirmation this is a supported way of working. Similarly, Activity.Current.AddBagage equally seems to work for custom tracking data which you want to pass onto any dependencies (and dependencies of those... all the way down)l. This is compatible with at least Service Bus and .NET Core Http.
@brettsam, this issue fell through the cracks. Can you comment?
Can someone please let us know if we can use ILogger's LogInformation method to log CustomeDimensions in Application insights.
if you use logger like this it automatically add it as custome property in your logs:
var property = new KeyValuePair<string, string>("name","value"); _logger.LogInformation("request name value ===> {name}", property);
The code from @mheskandari works for me to add to traces
table, but that doesn't include it in requests
table. This makes sense: logs written from ILogger
just go to traces
table.
To add to customDimensions
within the requests
table you can do this:
httpContext.Features.Get<RequestTelemetry>().Properties["SomePropertyName"] = someData;
e.g. as described here in more detail https://www.davepaquette.com/archive/2020/03/07/enhancing-application-insights-request-telemetry.aspx
@xstof suggests above that you could instead use System.Diagnostics.Activity.Current.AddTag() to add custom dimensions to requests
but that doesn't work for me now (Application Insights v2.19.0). The tags don't seem to go anywhere. Seems like it would be nice, perhaps I'm just doing it wrong.
If you want to add custom properties that are automatically added to dependencies
(e.g. SQL) and traces
tables you can use System.Diagnostics.Activity.Current.AddBaggage()
, e.g. within a middleware class so this gets done at the start of every request. In my testing this does not get added to requests
table though, so I need to do both this and the RequestTelemetry Properties as above.
string theTenantId = // get something from httpContext
System.Diagnostics.Activity.Current.AddBaggage("MyTenantId", theTenantId);
Hi,
I'm really missing the ability to decorate each request with custom dimensions. I'm using the native functions integration with AppInsights, and I use
ILogger
-- I wouldn't want to install the AppInsights nuget and do all the initializations myself.Optimal solution for me is to have a Dictionary as an optional input in the Function's signature.
Is this by any chance possible today? If not, can you consider this as a new feature/improvement?
Many thanks ! Jonathan