Using the guide here, I'm trying to log the SQL generated by my MVC web application.
The guide uses the line:
context.Database.Log = Console.Write;
Which obviously doesn't work with a web application. The guide described the Log property:
The DbContext.Database.Log property can be set to a delegate for any method that takes a string.
And it's this I don't understand, delegates just confuse me. How can I use this EF6 feature?
Using a delegate allows you to do write any function taking a string. As a very simple logging to a file, you could do the following:
context.Database.Log = message => File.AppendText("C:\\mylog.txt").WriteLine(message);
In a web environment, you may wish to use Trace to log this information:
context.Database.Log = message => Trace.WriteLine(message);
You can see more examples of using delegates on the MSDN page on Anonymous Functions.
To write your logs to a file, try this:
using (var context = new MyDbContext())
{
var logFile = new StreamWriter("C:\\temp\\log.txt");
context.Database.Log = logFile.Write;
// Execute your queries here
// ....
logFile.Close();
}
You can print it in Debug window:
dbContext.Database.Log = message => Debug.Write(message);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With