Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

log4net rolling file appender not working

I have following configuration:

<log4net>
    <root>
      <level value="All"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="mylog.log"/>
      <appendToFile value="true"/>
      <preserveLogFileNameExtension value="true"/>
      <rollingStyle value="Composite"/>
      <datePattern value=".yyyyMMdd"/>
      <maximumFileSize value="5MB"/>
      <countDirection value="1"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
  </log4net>

And the following code in global.asax:

Sub Application_Start()
        AreaRegistration.RegisterAllAreas()

        RegisterGlobalFilters(GlobalFilters.Filters)
        RegisterRoutes(RouteTable.Routes)

        BasicConfigurator.Configure();

        LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")


    End Sub

For the tag file in configuration above. I have tried C:\my folder\mylog.log as well as what is seen above mylog.log

However, I do not see this file generated anywhere and there are no exceptions.

Environment: VS 2013 ASP.Net VB. Running via Debug menu. When I run IISExpress is started by VS2013 and site runs. but no log is seen.

I have tried various combinations for the file tag but nothing works.

Can someone help please?

like image 251
ASR Avatar asked Mar 11 '26 01:03

ASR


2 Answers

This is final version of what I ended up doing that worked:

 <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log4net.log"/>
      <datePattern value="yyyy-MM-dd'-FULL.log'" />
      <appendToFile value="true"/>
      <preserveLogFileNameExtension value="true"/>
      <rollingStyle value="Size"/>      
      <maximumFileSize value="250KB"/>      
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
  </log4net>

And

XmlConfigurator.Configure()
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")

This logged to log\log4net.log in the application directory (i.e. where my code is )

like image 141
ASR Avatar answered Mar 13 '26 15:03

ASR


This used to work for me (I've switched to the lighter and better configurable NLog), log rolled daily, was written in a subfolder named "Logs" under the app's path.

  <appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\" />
    <datePattern value="yyyy-MM-dd'-FULL.log'" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="100" />
    <maximumFileSize value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
like image 39
Alex Avatar answered Mar 13 '26 14:03

Alex