using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace HslCommunication.LogNet { /// /// 单日志文件对象 /// /// /// 此日志实例化需要指定一个完整的文件路径,当需要记录日志的时候调用方法,会使得日志越来越大,对于写入的性能没有太大影响,但是会影响文件读取。 /// public class LogNetSingle : LogNetBase, ILogNet { #region Private Member private string m_fileName = string.Empty; #endregion #region Constructor /// /// 实例化一个单文件日志的对象 /// /// 文件的路径 /// public LogNetSingle(string filePath) { LogSaveMode = LogNetManagment.LogSaveModeBySingleFile; m_fileName = filePath; FileInfo fileInfo = new FileInfo(filePath); if(!Directory.Exists(fileInfo.DirectoryName)) { Directory.CreateDirectory(fileInfo.DirectoryName); } } #endregion #region Public Method /// /// 单日志文件允许清空日志内容 /// public void ClearLog() { m_fileSaveLock.Enter(); if (!string.IsNullOrEmpty(m_fileName)) { File.Create(m_fileName).Dispose(); } m_fileSaveLock.Leave(); } /// /// 获取单日志文件的所有保存记录 /// /// 字符串信息 public string GetAllSavedLog() { string result = string.Empty; m_fileSaveLock.Enter(); if (!string.IsNullOrEmpty(m_fileName)) { if (File.Exists(m_fileName)) { StreamReader stream = new StreamReader(m_fileName, Encoding.UTF8); result = stream.ReadToEnd(); stream.Dispose(); } } m_fileSaveLock.Leave(); return result; } /// /// 获取所有的日志文件数组,对于单日志文件来说就只有一个 /// /// 字符串数组,包含了所有的存在的日志数据 public string[] GetExistLogFileNames( ) { return new string[] { m_fileName, }; } #endregion #region LogNetBase Override /// /// 获取存储的文件的名称 /// /// 字符串数据 protected override string GetFileSaveName() { return m_fileName; } #endregion #region Object Override /// /// 返回表示当前对象的字符串 /// /// public override string ToString( ) { return $"LogNetSingle"; } #endregion } }