ILog4CPP.cs 2.0 KB
#define HAS_READERWRITELOCK
using System;
using System.Threading;

namespace eyemLib_Sharp.log4cpp
{
    interface ILog4CPP
    {
        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteLog(string text);
        string[] GetExistLogFileNames();
    }

    /// <summary>
    /// 生成日志模式
    /// </summary>
    public enum GenerateMode
    {
        /// <summary>
        /// 按每分钟生成日志文件
        /// </summary>
        ByEveryMinitues = 0,
        /// <summary>
        /// 按每个小时生成日志文件
        /// </summary>
        ByEveryHour = 1,
        /// <summary>
        /// 按每天生成日志文件
        /// </summary>
        ByEveryDay = 2,
    }

    public enum CreateFileMode
    {
        /// <summary>
        /// 生成.csv文件
        /// </summary>
        CSV,
        /// <summary>
        /// 生成.txt文件
        /// </summary>
        TXT
    }

    public sealed class ReaderWriteLock
    {
        public ReaderWriteLock()
        {
            m_lock = new System.Threading.ReaderWriterLock();
        }
        public void EnterReaderLock()
        {
#if HAS_READERWRITELOCK
            m_lock.AcquireReaderLock(-1);
#else
            System.Threading.Monitor.Enter(this);
#endif
        }
        public void ReleaseReaderLock()
        {
#if HAS_READERWRITELOCK
            m_lock.ReleaseReaderLock();
#else
            System.Threading.Monitor.Exit(this);
#endif
        }

        public void EnterWriterLock()
        {
#if HAS_READERWRITELOCK
            m_lock.AcquireWriterLock(-1);
#else
            System.Threading.Monitor.Enter(this);
#endif
        }
        public void ReleaseWriterLock()
        {
#if HAS_READERWRITELOCK
            m_lock.ReleaseWriterLock();
#else
            System.Threading.Monitor.Exit(this);
#endif
        }
#if HAS_READERWRITELOCK
        private System.Threading.ReaderWriterLock m_lock;
#endif
    }
}