I am trying to redirect NHibernate’s sql to a separate file with the following configuration but with no success. Everything (with SQL queries) goes to the main file.
Can someone help?
<log4net>
<appender name="DebugSQL" type="log4net.Appender.FileAppender">
<param name="File" value="nhsql.log"/>
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="Main" type="log4net.Appender.FileAppender">
<param name="File" value="nh.log"/>
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="NHibernate.SQL">
<level value="ALL" />
<appender-ref ref="DebugSQL" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="Main" />
</root>
</log4net>
That root configuration is going to send everything to the Main appender, in addition to sending the SQL to a separate file. If you want to prevent the SQL from showing up in the main log file, you need to search for “filter” in the log4net manual: http://logging.apache.org/log4net/release/manual/configuration.html Those should go inside the configuration for the main appender.