I’m trying to get Castle ActiveRecord to show me the SQL it generates. The various blogs I’ve found on this give two alternatives:
(1) Use the NHibernate “show_sql” setting. The trouble is, I’m using programmatic configuration, like this.
var config = XmlConfigurationSource.Build(
DatabaseType.MsSqlServer2008, Settings.Default.StationManagerDbConnectionString);
config.IsRunningInWebApp = isRunningInWebApp;
config.PluralizeTableNames = true;
var modelAssembly = Assembly.GetAssembly(typeof(OneOfMyClasses));
ActiveRecordStarter.Initialize(modelAssembly, config);
With programmatic configuration, there doesn’t seem to be a way to specify “show_sql”.
(2) Use log4net. But leaving aside what a pain log4net is to get working, I haven’t found a way to get just the SQL. I get gobs and gobs of debug data, of which the SQL statements are just a small part.
So: Is there some way I can keep my programmatic configuration of Castle ActiveRecord but also get NHibernate to output just the SQL?
EDIT: Here’s what I got to work with log4net. But in the first two pages of my web app, this spits out over 14,000 lines in the Debug window. How do I change this code to get only the SQL?
var appender = new log4net.Appender.DebugAppender
{
Layout = new log4net.Layout.SimpleLayout(),
Name = "NHibernate.SQL",
Threshold = log4net.Core.Level.Debug
};
log4net.Config.BasicConfigurator.Configure(appender);
You should be able to just separate out the sql by utilizing the NHibernate.SQL logger.
Example config:
Edit: