Я пытаюсь впервые использовать Log4net в своем приложении WinForm, прежде чем я подумал, будет ли он работать в моем приложении консоли, которое даже не произвело каких-либо журнальный файл.Как использовать Log4net для входа в файл в приложении Windows
Я также упомянул другие сообщения, чтобы добиться регистрации, но безрезультатно.
Чтобы получить NHibernate генерируются запросы регистрируются в файле, я добавил следующее в моем Config File, как предложено в post:
Config File
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NHibernate" culture="neutral" publicKeyToken="aa95f207798dfdb4" />
<bindingRedirect newVersion="3.4.0.0" oldVersion="3.1.0.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=localhost\SQLEXPRESS;Initial Catalog=NHibernateIntro;Integrated Security=True</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="show_sql">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache" >true</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<!-- <mapping assembly="NHibernateTest"/>-->
</session-factory>
</hibernate-configuration>
<log4net debug="false">
<!-- Define some output appenders -->
<appender name="trace"
type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<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>
<appender name="rollingFile"
type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern"
value="%d [%t] %-5p %c - %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>
<logger name="NHibernate">
<level value="WARN" />
</logger>
<logger name="NHibernate.SQL">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
</logger>
</log4net>
</configuration>
Затем я добавил следующее AssemblyInfo. cs:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Это все, что мне было предложено в вышеуказанном сообщении. Но это не сработало. Я что-то упускаю?
Обновлено:
Ниже приводится простой класс с простыми методами, в которых я использую NHibernate и хотят результирующие запросы, которые будут показаны в файле:
public class Merger
{
public static void Run(ISessionFactory factory)
{
Customer customer;
using (var session = factory.OpenSession())
using (var tx = session.BeginTransaction())
{
customer = session.Get<Customer>(6946816);
}
customer.FirstName = "example";
using (var session = factory.OpenSession())
using (var tx = session.BeginTransaction())
{
object anothercustomer = session.Merge(customer);
session.SaveOrUpdate(anothercustomer);
tx.Commit();
}
}
}
Кажется, что вы используете только один appender - определенный на * root * - консоли. Попробуйте расширить logger ' <значение уровня =" DEBUG "/> ' –
@Radim Как вам было предложено, я обновил config, но это тоже не сработало. В config написано: value = "log.txt", что означает, что он должен создать файл журнала, где принадлежит мой проект. Должен ли я использовать какой-либо метод регистрации или что-то, чтобы получить журналы, записанные в файле журнала, или это сделано легко, потому что я не использовал какой-либо метод или что-то – Sadiq
Извините, не уверен, что не так ... Надеюсь, вы получите ответ –