我正在针对nHibernate应用程序从VS2008内部运行单元测试,并希望在单元测试期间打开日志记录,这样我就可以看到更多的内容。我已经复制并粘贴了另一个应用程序的app.config,它成功地将nhibernate信息记录到单元测试app.config中,但仍然没有得到任何输出。
这是测试项目的app.config:
<log4net>
<appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender">
<file value="Logs/nhibernate.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
<file value="Logs/general.txt" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="DataLog" type="log4net.Appender.RollingFileAppender">
<file value="Logs/data.txt" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
<root>
<level value="DEBUG"/>
<appender-ref ref="GeneralLog" />
</root>
<logger name="NHibernate" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHibernateFileLog"/>
</logger>
<logger name="Pushable.Data" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="DataLog"/>
</logger>
</log4net>
当我运行测试项目时,没有从log4net创建任何输出。运行log4net的应用程序必须是Web或Windows而不是测试应用程序吗?
答案 0 :(得分:5)
在Test初始化程序中,需要进行调用:
log4net.Config.XmlConfigurator.Configure();
这样可以很好地记录日志。
答案 1 :(得分:1)
如果您只想查看所有已触发的sql语句,请在Nhiberante配置部分中将show_sql属性设置为true,
例如
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<property name="show_sql">true</property>
</hibernate-configuration>
答案 2 :(得分:1)
show_sql是一个很好的选择
Configure Log4Net for use with NHibernate
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- Others sections -->
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<!-- Some others configurations -->
<!-- This section contains the log4net configuration settings -->
<log4net debug="false">
<appender name="console"
type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="DEBUG" />
<appender-ref ref="console" />
</root>
</log4net>
</configuration>
答案 3 :(得分:0)
如果您的代码是在生产中登录而不是在测试中,请查看测试目录。测试在“testresults”的子目录中运行,该子目录是为每个testrun创建的。您的配置文件当然不存在。
需要声明需要安装到测试目录的所有内容。使用它将[DeploymentItem(“myfile”)]添加到testclass或转到Test - &gt;编辑测试运行配置 - &gt;本地测试运行。然后转到“部署”并添加配置文件。