1

i am tring to use log4net for log but it is not working

My log file is created empty, without data. There is no NHibernate data and There is no USER data. Does anybody know why?

I am tring to do like this: web.config

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    <add key="log4net.Config" value="log4net.config"/>
    <add key="log4net.Config.Watch" value="True"/>

  </appSettings>

<log4net debug="true">
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <file type="log4net.Util.PatternString" value="Logs/"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <staticLogFileName value="false"/>
      <datePattern value="'MyLog_'yyyyMMdd'.log'"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{HH:mm:ss.fff} %-5level: %message%newline"/>
      </layout>
    </appender>
    <logger name="LogEmArquivo">
      <level value="DEBUG"/>
      <appender-ref ref="FileAppender"/>
    </logger>

    <logger name="NHibernate">
      <level value="WARN" />
    </logger>

    <logger name="NHibernate.SQL">
      <level value="DEBUG" />
    </logger>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogEmArquivo" />
    </root>
</log4net>

On AssemblyInfo

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

On my Helper

log4net.Config.XmlConfigurator.Configure();
log  = LogManager.GetLogger("LogEmArquivo");

What is wrong? i already tried many diferent way and the only things that is happining is create the file MyLog_20170303.log with no data.

Kurokibr
  • 7
  • 2

2 Answers2

0

I keep my log4net config in a seaprate file

Here's my complete file that works.

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <file value="logs/error.log" />
  <appendToFile value="true" />
  <maximumFileSize value="100KB" />
  <maxSizeRollBackups value="2" />

  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%level %thread %logger - %message%newline" />
  </layout>
</appender>
<logger name="NHibernate">
  <level value="WARN" />
</logger>
<logger name="NHibernate.SQL">
  <level value="DEBUG" />
</logger>
<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingFile" />
</root>

Have you tried a simpler log configuration with a static log file name to see if it is your log4net configuration.

You can also turn on internal debugging for log4net to verify your configuration is valid. See this answer here How to track down log4net problems

Community
  • 1
  • 1
Fran
  • 6,440
  • 1
  • 23
  • 35
0

Maybe are you encountering the LOG4NET-506 issue: latest versions of log4net issue an exclusive mutex named according to file configuration property.

It does not cause issues if the file configuration actually target a file.

But in your case, it is a directory. If you have many processes trying to log to that directory, only one of them will be able of logging.

As a workaround, I have instructed log4net in my cases to log in a Logs\ sub-directory dedicated to each application. Like: file="Logs\App1\".

Frédéric
  • 9,364
  • 3
  • 62
  • 112