There is no magic way to do this, but there are a number of tools that can play well with ADO.NET to capture what is happening. For example, the mini-profiler does this by wrapping ADO.NET, which usually only includes one change to the "create connection" code - it then logs the operations inside. The code is open source, so it would be trivial to configure it to your own logging structure.
As an example, if I logged in (SEDE) and looked at a random page, here, let's say , I can see all the registered SQL operations (no code changes were necessary to get this log), here - or in case this becomes unavailable:

The only minor glitch is your explicit use of SqlParameter , which may need to be changed to cmd.CreateParameter() . Also, use something like dapper to simplify it:
conn.Execute("sp_Trk_GetSuspiciusVisitor", new { channel = "gb", data = DateTime.Today.AddDays(-1) }, commandType: CommandType.StoredProcedure);
Note that the above declare statements were not part of the original request; the tool added them to simplify the launch of the request in SSMS, etc.
source share