예제 #1
0
        static LogService()
        {
            // s_DTName2Repository = new Dictionary<string, ILoggerRepository>();
            s_DTName2Log = new Dictionary <string, Logger>();

            string fileName = "log4net.config";

            fileName = Path.Combine(Environment.CurrentDirectory, fileName);
            if (!File.Exists(fileName))
            {
                File.WriteAllText(fileName, Properties.Resources.log4net, Encoding.UTF8);
            }

            FileInfo fi = new FileInfo(fileName);

            log4net.Config.XmlConfigurator.Configure(fi);
            // s_Log = log4net.LogManager.GetLogger("AppLogger"); //"DebuggingLog");
            s_Log = log4net.LogManager.GetLogger("template");

            if (s_Appenders == null)
            {
                AppenderCollection ac = (s_Log.Logger as log4net.Repository.Hierarchy.Logger).Appenders;
                if (ac != null && ac.Count > 0)
                {
                    s_Appenders = new RollingFileAppender[ac.Count];
                    for (int i = 0; i < ac.Count; i++)
                    {
                        s_Appenders[i] = ac[i] as RollingFileAppender;
                    }
                }
            }
        }
예제 #2
0
 public void RemoveAllAppenders()
 {
     if (this.m_appenderList != null)
     {
         AppenderCollection.IAppenderCollectionEnumerator enumerator = this.m_appenderList.GetEnumerator();
         try
         {
             while (enumerator.MoveNext())
             {
                 IAppender current = enumerator.Current;
                 try
                 {
                     current.Close();
                 }
                 catch (Exception exception)
                 {
                     LogLog.Error(declaringType, "Failed to Close appender [" + current.Name + "]", exception);
                 }
             }
         }
         finally
         {
             IDisposable disposable = enumerator as IDisposable;
             if (disposable != null)
             {
                 disposable.Dispose();
             }
         }
         this.m_appenderList  = null;
         this.m_appenderArray = null;
     }
 }
예제 #3
0
        /// <summary>
        /// 获取Logger appender配置信息
        /// </summary>
        /// <param name="log">ILog</param>
        public static IAppender[] GetLoggerAppenders(ILog log)
        {
            AppenderCollection appenderCollection = ((log4net.Repository.Hierarchy.Logger)((log4net.Core.LoggerWrapperImpl)log).Logger).Appenders;

            IAppender[] appenders = (IAppender[])appenderCollection.SyncRoot;

            //string file = ((FileAppender)appenders[0]).File;
            return(appenders);
        }
        public void ToArrayTest()
        {
            AppenderCollection appenderCollection = new AppenderCollection();
            IAppender          appender           = new AppenderMemory();

            appenderCollection.Add(appender);

            IAppender[] appenderArray = appenderCollection.ToArray();

            Assert.AreEqual(1, appenderArray.Length);
            Assert.AreEqual(appender, appenderArray[0]);
        }
예제 #5
0
 public IAppender RemoveAppender(IAppender appender)
 {
     if ((appender != null) && (this.m_appenderList != null))
     {
         this.m_appenderList.Remove(appender);
         if (this.m_appenderList.Count == 0)
         {
             this.m_appenderList = null;
         }
         this.m_appenderArray = null;
     }
     return(appender);
 }
        public void ReadOnlyToArrayTest()
        {
            AppenderCollection appenderCollection = new AppenderCollection();
            IAppender          appender           = new AppenderMemory();

            appenderCollection.Add(appender);
            AppenderCollection readonlyAppenderCollection = AppenderCollection.ReadOnly(appenderCollection);

            IAppender[] appenderArray = readonlyAppenderCollection.ToArray();

            Assert.AreEqual(1, appenderArray.Length);
            Assert.AreEqual(appender, appenderArray[0]);
        }
예제 #7
0
 /// <summary>
 /// Removes the specified appender from the list of attached appenders.
 /// </summary>
 /// <param name="appender">The appender to remove.</param>
 /// <returns>The appender removed from the list</returns>
 /// <remarks>
 /// <para>
 /// The appender removed is not closed.
 /// If you are discarding the appender you must call
 /// <see cref="M:log4net.Appender.IAppender.Close" /> on the appender removed.
 /// </para>
 /// </remarks>
 public IAppender RemoveAppender(IAppender appender)
 {
     if (appender != null && m_appenderList != null)
     {
         m_appenderList.Remove(appender);
         if (m_appenderList.Count == 0)
         {
             m_appenderList = null;
         }
         m_appenderArray = null;
     }
     return(appender);
 }
예제 #8
0
    public log4net.Appender.IAppender GetLogAppender(string AppenderName)
    {
        AppenderCollection ac = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Appenders;

        foreach (log4net.Appender.IAppender appender in ac)
        {
            if (appender.Name == AppenderName)
            {
                return(appender);
            }
        }
        return(null);
    }
예제 #9
0
 /// <summary>
 /// Attaches an appender.
 /// </summary>
 /// <param name="newAppender">The appender to add.</param>
 /// <remarks>
 /// <para>
 /// If the appender is already in the list it won't be added again.
 /// </para>
 /// </remarks>
 public void AddAppender(IAppender newAppender)
 {
     if (newAppender == null)
     {
         throw new ArgumentNullException("newAppender");
     }
     m_appenderArray = null;
     if (m_appenderList == null)
     {
         m_appenderList = new AppenderCollection(1);
     }
     if (!m_appenderList.Contains(newAppender))
     {
         m_appenderList.Add(newAppender);
     }
 }
예제 #10
0
        /// <summary>
        /// Attaches an appender.
        /// </summary>
        /// <param name="newAppender">The appender to add.</param>
        /// <remarks>
        /// If the appender is already in the list it won't be added again.
        /// </remarks>
        public void AddAppender(IAppender newAppender)
        {
            // Null values for newAppender parameter are strictly forbidden.
            if (newAppender == null)
            {
                throw new ArgumentNullException("newAppender");
            }

            if (m_appenderList == null)
            {
                m_appenderList = new AppenderCollection(1);
            }
            if (!m_appenderList.Contains(newAppender))
            {
                m_appenderList.Add(newAppender);
            }
        }
예제 #11
0
        public void Close()
        {
            SetLevel("OFF");

            log4net.Core.IAppenderAttachable closingAppenders = (log4net.Core.IAppenderAttachable)log.Logger;
            AppenderCollection collection = closingAppenders.Appenders;

            for (int i = 0; i < collection.Count; i++)
            {
                if (collection[i] is BufferingForwardingAppender)
                {
                    //This FLUSH and close the current appenders along with all of its children appenders
                    ((BufferingForwardingAppender)collection[i]).Close();
                }
            }
            this.RemoveAllAppender(log);
        }
예제 #12
0
 /// <summary>
 /// Closes all attached appenders implementing the <see cref="IAppenderAttachable"/> interface.
 /// </summary>
 /// <remarks>
 /// <para>
 /// Used to ensure that the appenders are correctly shutdown.
 /// </para>
 /// </remarks>
 virtual public void CloseNestedAppenders()
 {
     m_appenderLock.AcquireWriterLock();
     try {
         if (m_appenderAttachedImpl != null)
         {
             AppenderCollection appenders = m_appenderAttachedImpl.Appenders;
             foreach (IAppender appender in appenders)
             {
                 if (appender is IAppenderAttachable)
                 {
                     appender.Close();
                 }
             }
         }
     } finally {
         m_appenderLock.ReleaseWriterLock();
     }
 }
예제 #13
0
파일: Logger.cs 프로젝트: waqashaneef/NosDB
 public void Close()
 {
     try
     {
         log4net.Core.IAppenderAttachable closingAppenders = (log4net.Core.IAppenderAttachable)_log.Logger;
         AppenderCollection collection = closingAppenders.Appenders;
         for (int i = 0; i < collection.Count; i++)
         {
             if (collection[i] is BufferingForwardingAppender)
             {
                 //This FLUSH and close the current appenders along with all of its children appenders
                 ((BufferingForwardingAppender)collection[i]).Close();
             }
         }
         this.RemoveAllAppender();
     }
     catch (Exception ex)
     {
         AppUtil.LogEvent(ex.ToString(), System.Diagnostics.EventLogEntryType.Error);
     }
 }
예제 #14
0
        /// <summary>
        /// Stop the cache logging functionality.
        /// </summary>
        public static void Close(string cacheName)
        {
            lock (lockObj)
            {
                if (cacheName != null)
                {
                    if (cacheName.Length != 0)
                    {
                        string temploggerName = LoggingInformation.GetLoggerName(cacheName);

                        //called at remove cache
                        if (temploggerName != null)
                        {
                            SetLevel(temploggerName, "OFF");

                            if (temploggerName != null)
                            {
                                log4net.ILog log = log4net.LogManager.GetLogger(temploggerName);

                                log4net.Core.IAppenderAttachable closingAppenders = (log4net.Core.IAppenderAttachable)log.Logger;
                                AppenderCollection collection = closingAppenders.Appenders;
                                for (int i = 0; i < collection.Count; i++)
                                {
                                    if (collection[i] is BufferingForwardingAppender)
                                    {
                                        //This FLUSH and close the current appenders along with all of its children appenders
                                        ((BufferingForwardingAppender)collection[i]).Close();
                                    }
                                }

                                RemoveAllAppender(temploggerName);
                                LoggingInformation.cacheLogger.Remove(cacheName);
                            }
                        }
                    }
                }
            }
        }
예제 #15
0
파일: Logger.cs 프로젝트: Xarlot/DXVcsTools
        static IAppender GetAppender(string name)
        {
            AppenderCollection ac = GetRoot().Root.Appenders;

            return(ac.Cast <IAppender>().FirstOrDefault(appender => appender.Name == name));
        }
예제 #16
0
 internal Enumerator(AppenderCollection tc)
 {
     this.m_collection = tc;
     this.m_index      = -1;
     this.m_version    = tc.m_version;
 }
예제 #17
0
 internal ReadOnlyAppenderCollection(AppenderCollection list) : base(AppenderCollection.Tag.Default)
 {
     this.m_collection = list;
 }
예제 #18
0
 public override int AddRange(AppenderCollection x)
 {
     throw new NotSupportedException("This is a Read Only Collection and can not be modified");
 }