ASR
ASR

Reputation: 429

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?

Upvotes: 3

Views: 25812

Answers (6)

Vladislav
Vladislav

Reputation: 1995

There may be an issue with the log folder permissions. Without granting Modify permissions to the process user, log4net does not create a rolling log file.

enter image description here

Upvotes: 0

Vladimir Krasko
Vladimir Krasko

Reputation: 19

Adding debug = "true" to the <log4net> tag (i.e. <log4net debug="true"> ) can help to solve the problem

Upvotes: -1

kishore tvk
kishore tvk

Reputation: 31

*_%date{yyyyMMdd}.log

below is the key, if this is missing u will see logs like above

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="C:\log4net_internal.log"/>
 **<staticLogFileName value="false" />**
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Upvotes: 0

ASR
ASR

Reputation: 429

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 )

Upvotes: 5

Alex
Alex

Reputation: 23300

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>

Upvotes: 4

bastos.sergio
bastos.sergio

Reputation: 6764

You should turn on log4net's internal debugging to figure out what's failing...

Sample web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="C:\log4net_internal.log"/>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

More information available here on the troubleshooting section.

Upvotes: 4

Related Questions