Ejemplo n.º 1
0
        /// <summary>
        /// 写日志以前的准备工作
        /// </summary>
        override public void ActivateAppender()
        {
            if (m_lockingModel == null)
            {
                switch (LogConfig.Instance.LockType)
                {
                //独占锁
                case LockingType.Exclusive:
                    m_lockingModel = new ExclusiveLock();
                    break;

                //跨进程文件锁定
                case LockingType.InterProcess:
                    m_lockingModel = new InterProcessLock();
                    break;

                //最小时间锁
                case LockingType.Minimal:
                    m_lockingModel = new MinimalLock();
                    break;
                }
            }

            m_lockingModel.CurrentAppender = this;

            if (m_fileName != null)
            {
                PrepareWriter();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 打开文件为写日志操作做准备
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <param name="append">是否添加日志信息到文件尾</param>
        virtual protected void OpenFile(string fileName, bool append)
        {
            lock (this)
            {
                //先进行关闭之前打开的文件
                Reset();

                // 保存这些后, 允许重试如果打开文件失败
                m_fileName     = fileName;
                m_appendToFile = append;

                switch (LogConfig.Instance.LockType)
                {
                //独占
                case LockingType.Exclusive:
                    m_lockingModel = new ExclusiveLock();
                    break;

                //跨进程文件锁
                case LockingType.InterProcess:
                    m_lockingModel = new InterProcessLock();
                    break;

                //最小时间
                case LockingType.Minimal:
                    m_lockingModel = new MinimalLock();
                    break;
                }
                //
                LockingModel.CurrentAppender = this;
                //打开文件
                LockingModel.OpenFile(fileName, append, m_encoding);

                m_stream = new LockingStream(LockingModel);

                if (m_stream != null)
                {
                    m_stream.AcquireLock();

                    try
                    {
                        SetQWForFiles(new StreamWriter(m_stream, m_encoding));
                    }
                    finally
                    {
                        m_stream.ReleaseLock();
                    }
                }
            }
        }
Ejemplo n.º 3
0
 private void Initialize(PluginRollingFileAppender baseAppender, IActivityLogPathProvider path)
 {
     Folder             = baseAppender.Folder;
     AppendToFile       = baseAppender.AppendToFile;
     CountDirection     = baseAppender.CountDirection;
     DatePattern        = CsvLayout.DATE_TIME_FORMAT;
     Encoding           = baseAppender.Encoding;
     ErrorHandler       = baseAppender.ErrorHandler;
     File               = GetFileName(_accountName, _profileName, baseAppender.File.GetFileName(), path);
     ImmediateFlush     = baseAppender.ImmediateFlush;
     Layout             = new CsvLayout();
     LockingModel       = new MinimalLock();
     MaxFileSize        = baseAppender.MaxFileSize;
     MaxSizeRollBackups = baseAppender.MaxSizeRollBackups;
     MaximumFileSize    = baseAppender.MaximumFileSize;
     Name               = path.GetLogPathFor(_accountName, _profileName, baseAppender.Name.GetFileName());
     RollingStyle       = baseAppender.RollingStyle;
     StaticLogFileName  = baseAppender.StaticLogFileName;
     Threshold          = baseAppender.Threshold;
 }
		private void Initialize(PluginRollingFileAppender baseAppender, IActivityLogPathProvider path)
		{
			Folder = baseAppender.Folder;
			AppendToFile = baseAppender.AppendToFile;
			CountDirection = baseAppender.CountDirection;
			DatePattern = CsvLayout.DATE_TIME_FORMAT;
			Encoding = baseAppender.Encoding;
			ErrorHandler = baseAppender.ErrorHandler;
			File = GetFileName(_accountName, _profileName, baseAppender.File.GetFileName(), path);
			ImmediateFlush = baseAppender.ImmediateFlush;
			Layout = new CsvLayout();
			LockingModel = new MinimalLock();
			MaxFileSize = baseAppender.MaxFileSize;
			MaxSizeRollBackups = baseAppender.MaxSizeRollBackups;
			MaximumFileSize = baseAppender.MaximumFileSize;
			Name = path.GetLogPathFor(_accountName, _profileName, baseAppender.Name.GetFileName());
			RollingStyle = baseAppender.RollingStyle;
			StaticLogFileName = baseAppender.StaticLogFileName;
			Threshold = baseAppender.Threshold;
		}