Hello,
I am using three appenders in my log4net configuration (see bellow). But
I need programatically disable and reenable RollingFile appender at
certain situations. Is there any simple solution? I tried to use
programatic configuration only.

My config:
<log4net>
                <appender name="Console"
type="log4net.Appender.ConsoleAppender">
                        <layout type="log4net.Layout.PatternLayout">
                                <!-- Pattern to output the caller's file
name and line number -->
                                <conversionPattern
value="%date{HH:mm:ss,fff} %5level [%thread] %message%n" />
                        </layout>
                        <Threshold value="DEBUG" />
                </appender>

                <appender name="RollingFile"
type="log4net.Appender.RollingFileAppender">
                        <appendToFile value="true" />
                        <file value="Service.log" />
                        <layout type="log4net.Layout.PatternLayout">
                                <conversionPattern
value="%date{dd-MM-yyyy HH:mm:ss,fff} %5level [%2thread] %message
(%logger{1}:%line)%n" />
                        </layout>
                        <rollingStyle value="Date" />
                        <Threshold value="DEBUG" />
                </appender>

                <appender name="EvLog"
type="log4net.Appender.EventLogAppender">
                        <ApplicationName value="IPserver" />
                        <layout type="log4net.Layout.PatternLayout">
                                <conversionPattern value="[%thread]
%message (%logger{1})" />
                        </layout>
                        <Threshold value="INFO" />
                </appender>

                <root>
                        <level value="DEBUG" />
                        <appender-ref ref="RollingFile" />
                        <appender-ref ref="Console" />
                        <appender-ref ref="EvLog" />
                </root>
        </log4net>

I tried to complete rewrite this config into C# code:

private readonly log4net.Appender.ConsoleAppender AppConsole;
private readonly log4net.Appender.RollingFileAppender AppFile;
private readonly log4net.Appender.EventLogAppender AppEvlog;
private log4net.Repository.Hierarchy.RootLogger rootLog;
//XmlConfigurator.Configure(new
System.IO.FileInfo(IPserverCore.IPserver.GetAppPath() +
"log4net.config"));
//xml configurator replaced by code
AppConsole = new log4net.Appender.ConsoleAppender();
AppConsole.Layout = new
log4net.Layout.PatternLayout("%date{HH:mm:ss,fff} %5level [%thread]
%message%n");
AppConsole.Threshold = log4net.Core.Level.Debug;

AppFile = new log4net.Appender.RollingFileAppender();
AppFile.AppendToFile = true;
AppFile.Layout = new log4net.Layout.PatternLayout("%date{dd-MM-yyyy
HH:mm:ss,fff} %5level [%2thread] %message (%logger{1}:%line)%n");
AppFile.File = "Service.log";
AppFile.RollingStyle =
log4net.Appender.RollingFileAppender.RollingMode.Date;
AppFile.Threshold = log4net.Core.Level.Debug;

AppEvlog = new log4net.Appender.EventLogAppender();
AppEvlog.Layout = new log4net.Layout.PatternLayout("[%thread] %message
(%logger{1})");
AppEvlog.ApplicationName = "IPserver";
AppEvlog.Threshold = log4net.Core.Level.Info;

rootLog = new
log4net.Repository.Hierarchy.RootLogger(log4net.Core.Level.Info);
                        
rootLog.AddAppender(AppConsole);
rootLog.AddAppender(AppFile);
rootLog.AddAppender(AppEvlog);
//----
log = LogManager.GetLogger(typeof(IPservice));
Log.Info("Start"); // no log produced here...
rootLog.RemoveAppender(AppFile); // disable file logging
...
But after rewriting aplication doesn't create any logs....
Did I miss some settings or am I complete wrong?

Thanks for any suggestions
Radovan Raszka

Reply via email to