/// <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(); } }
/// <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(); } } } }
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; }