ILogNet.cs 5.15 KB
using System;

namespace HslCommunication.LogNet
{
    /// <summary>
    /// 一个通用的日志接口
    /// </summary>
    /// <remarks>
    /// 本组件的日志核心机制,如果您使用了本组件却不想使用本组件的日志组件功能,可以自己实现新的日志组件,只要继承本接口接口。其他常用的日志组件如下:(都是可以实现的)
    /// <list type="number">
    /// <item>Log4Net</item>
    /// <item>NLog</item>
    /// </list>
    /// </remarks>
    /// <example>
    /// 实现类就不放示例代码了,存储日志的使用都是一样的,就是实例化的时候不一致,以下示例代码以单文件日志为例
    /// <code lang="cs" source="TestProject\HslCommunicationDemo\FormLogNet.cs" region="ILogNet" title="ILogNet示例" />
    /// </example>
    public interface ILogNet : IDisposable
    {
        /// <summary>
        /// 文件存储模式,1:单文件,2:根据大小,3:根据时间
        /// </summary>
        int LogSaveMode { get; }

        /// <summary>
        /// 存储之前引发的事件,允许额外的操作
        /// </summary>
        event EventHandler<HslEventArgs> BeforeSaveToFile;

        /// <summary>
        /// 自定义的消息记录
        /// </summary>
        /// <param name="degree">消息等级</param>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void RecordMessage(HslMessageDegree degree, string keyWord, string text);

        /// <summary>
        /// 写入一条调试日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteDebug(string text);

        /// <summary>
        /// 写入一条调试日志
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void WriteDebug(string keyWord, string text);

        /// <summary>
        /// 写入一条解释性的信息
        /// </summary>
        /// <param name="description"></param>
        void WriteDescrition(string description);

        /// <summary>
        /// 写入一条错误日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteError(string text);

        /// <summary>
        /// 写入一条错误日志
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void WriteError(string keyWord, string text);

        /// <summary>
        /// 写入一条异常信息
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="ex">异常</param>
        void WriteException(string keyWord, Exception ex);

        /// <summary>
        /// 写入一条异常信息
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">内容</param>
        /// <param name="ex">异常</param>
        void WriteException(string keyWord, string text, Exception ex);

        /// <summary>
        /// 写入一条致命日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteFatal(string text);

        /// <summary>
        /// 写入一条致命日志
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void WriteFatal(string keyWord, string text);


        /// <summary>
        /// 写入一条信息日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteInfo(string text);

        /// <summary>
        /// 写入一条信息日志
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void WriteInfo(string keyWord, string text);

        /// <summary>
        /// 写入一行换行符
        /// </summary>
        void WriteNewLine();

        /// <summary>
        /// 写入任意字符串
        /// </summary>
        /// <param name="text">文本</param>
        void WriteAnyString(string text);

        /// <summary>
        /// 写入一条警告日志
        /// </summary>
        /// <param name="text">日志内容</param>
        void WriteWarn(string text);

        /// <summary>
        /// 写入一条警告日志
        /// </summary>
        /// <param name="keyWord">关键字</param>
        /// <param name="text">日志内容</param>
        void WriteWarn(string keyWord, string text);

        /// <summary>
        /// 设置日志的存储等级,高于该等级的才会被存储
        /// </summary>
        /// <param name="degree">登记信息</param>
        void SetMessageDegree(HslMessageDegree degree);

        /// <summary>
        /// 获取已存在的日志文件名称
        /// </summary>
        /// <returns>文件列表</returns>
        string[] GetExistLogFileNames();

        /// <summary>
        /// 过滤掉指定的关键字的日志,该信息不存储,但仍然触发BeforeSaveToFile事件
        /// </summary>
        /// <param name="keyword">关键字</param>
        void FiltrateKeyword(string keyword);
    }
}