Create log4net Fallback function C#

37 Views Asked by At

Am new to this topic and trying to create a fallback functionality on failure of log4net. and ofcs I have gone through few posts that is related to this topic.

https://moaid.codes/post/writing-failover-appender-for-log4net/ My Custom Log4net Asynch Failover Appender Skips Messages

Below is the simple implementation I have.

public class ActivityLog : AppenderSkeleton
{
    public void Add(int Id)
    {   
        ILog _logger = LogManager.GetLogger("FallbackLogger");
        _logger.Info("FallbackLogger");
    }
}
protected override void Append(LoggingEvent loggingEvent)
{
    if (loggingEvent == null)
        throw new ArgumentNullException("LoggingEvent");
}
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
    </startup>
<log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <file value="Nets\" />
        <appendToFile value="true" />
        <maxSizeRollBackups value="10" />
        <rollingStyle value="Date" />
        <staticLogFileName value="false" />
        <layout type="log4net.Layout.PatternLayout,log4net">
            <conversionPattern value="%date{ISO8601} [%t] %-5p %c - %m%n" />
        </layout>
    </appender>
    <appender name="ActivityLog" type="log4net.Appender.RollingFileAppender,log4net">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <appender-ref ref="FallbackLogger" />
        <file value="Nets\" />
        <appendToFile value="true" />
        <maxSizeRollBackups value="10" />
        <rollingStyle value="Date" />
        <staticLogFileName value="false" />
        <layout type="log4net.Layout.PatternLayout,log4net">
            <conversionPattern value="%date{ISO8601} %message%newline" />
        </layout>
    </appender>
    <appender name="FallbackLogger" type="log4net.Appender.RollingFileAppender,log4net">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <file value="Nets\" />
        <appendToFile value="true" />
        <maxSizeRollBackups value="10" />
        <rollingStyle value="Date" />
        <staticLogFileName value="true" />
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="RollingLogFileAppender" />
    </root>
    <logger additivity="false" name="UserActivityLog">
        <level value="ALL" />
        <appender-ref ref="UserActivityLog" />      
    </logger>
    <logger additivity="false" name="FallbackLogger">
        <level value="ALL" />
        <appender-ref ref="FallbackLogger" />
    </logger>
</log4net>
</configuration>

and above is my log4net.Config

My question is that, none of this configuration does not trigger the Append() function at all & how do I configure this function to trigger and right to log when there is a log4net failure. Obviously, I am doing something not correct.

0

There are 0 best solutions below