mi fai diventare questa classe singleton? 
using log4net;
using log4net.Appender;
using log4net.Config;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace ImporterIxCe.Logging
{
    public class Logger : ILogger
    {
        private static ILog log;

        public Logger()
        {
        }

        public void Debug(string message)
        {
            if (Logger.log == null)
            {
                throw new Exception("Logger non inizializzato");
            }
            Logger.log.Debug(message);
        }

        public void Error(string message)
        {
            if (Logger.log == null)
            {
                throw new Exception("Logger non inizializzato");
            }
            Logger.log.Error(message);
        }

        public void Fatal(string message)
        {
            if (Logger.log == null)
            {
                throw new Exception("Logger non inizializzato");
            }
            Logger.log.Fatal(message);
        }

        public void Info(string message)
        {
            if (Logger.log == null)
            {
                throw new Exception("Logger non inizializzato");
            }
            log.Info(message);
        }

        public void Initialize(string name, string filename)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(filename);
            }
            Logger.log = LogManager.GetLogger(name);
            RollingFileAppender rollingFileAppender = new RollingFileAppender()
            {
                File = filename,
                AppendToFile = true,
                MaximumFileSize = "5120KB",
                MaxSizeRollBackups = 5,
                Layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline")
            };
            RollingFileAppender rollingFileAppender1 = rollingFileAppender;
            rollingFileAppender1.ActivateOptions();
            BasicConfigurator.Configure(rollingFileAppender1);
            this.SetLevel(Level.Off);
        }

        private void SetLevel(Level level)
        {
            ((Hierarchy)LogManager.GetRepository()).Root.Level = level;
            ((Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
        }

        public void SetLevel(System.Diagnostics.EventLogEntryType entryType)
        {
            switch (entryType)
            {
                case System.Diagnostics.EventLogEntryType.Error:
                    SetLevel(Level.Error);
                    break;
                case System.Diagnostics.EventLogEntryType.Warning:
                    SetLevel(Level.Warn);
                    break;
                case System.Diagnostics.EventLogEntryType.Information:
                    SetLevel(Level.Info);
                    break;
            }
        }

        public void SetLevel(string levelString)
        {
            IEnumerable<FieldInfo> fields =
                from x in (IEnumerable<FieldInfo>)typeof(Level).GetFields()
                where x.FieldType == typeof(Level)
                select x;
            FieldInfo fieldInfo = fields.FirstOrDefault<FieldInfo>((FieldInfo x) => x.Name.Equals(levelString, StringComparison.CurrentCultureIgnoreCase));
            if (fieldInfo == null)
            {
                throw new Exception(string.Format("Invalid logger level: {0}. Valid levels: {1}", levelString, string.Join(", ", (
                    from x in fields
                    select x.Name).ToArray<string>())));
            }
            this.SetLevel(fieldInfo.GetValue(null) as Level);
        }

        public void Warn(string message)
        {
            if (Logger.log == null)
            {
                throw new Exception("Logger non inizializzato");
            }
            Logger.log.Warn(message);
        }
    }
}