LoggerGroup.cs 6.4 KB
Newer Older
若汝棋茗 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
//------------------------------------------------------------------------------
//  此代码版权(除特别声明或在XREF结尾的命名空间的代码)归作者本人若汝棋茗所有
//  源代码使用协议遵循本仓库的开源协议及附加协议,若本仓库没有设置,则按MIT开源协议授权
//  CSDN博客:https://blog.csdn.net/qq_40374647
//  哔哩哔哩视频:https://space.bilibili.com/94253567
//  Gitee源代码仓库:https://gitee.com/RRQM_Home
//  Github源代码仓库:https://github.com/RRQM
//  API首页:https://www.yuque.com/rrqm/touchsocket/index
//  交流QQ群:234762506
//  感谢您的下载和使用
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
using System;
若汝棋茗 已提交
14 15
using System.Collections.Generic;
using TouchSocket.Core.Collections.Concurrent;
若汝棋茗 已提交
16 17 18 19 20 21 22 23

namespace TouchSocket.Core.Log
{
    /// <summary>
    /// 一组日志记录器
    /// </summary>
    public class LoggerGroup : LoggerBase
    {
若汝棋茗 已提交
24
        private readonly List<ILog> m_logs;
若汝棋茗 已提交
25 26 27 28 29 30 31 32


        /// <summary>
        /// 一组日志记录器
        /// </summary>
        /// <param name="logs"></param>
        public LoggerGroup(params ILog[] logs)
        {
若汝棋茗 已提交
33 34 35 36 37 38 39
            if (logs is null)
            {
                throw new ArgumentNullException(nameof(logs));
            }

            this.m_logs = new List<ILog>();
            this.m_logs.AddRange(logs);
若汝棋茗 已提交
40 41 42 43 44
        }

        /// <summary>
        /// 组内的日志记录器
        /// </summary>
若汝棋茗 已提交
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
        public ILog[] Logs => this.m_logs.ToArray();

        /// <summary>
        /// 添加日志组件
        /// </summary>
        /// <param name="logger"></param>
        public void AddLogger(ILog logger)
        {
            this.m_logs.Add(logger);
        }

        /// <summary>
        /// 移除日志
        /// </summary>
        /// <param name="logger"></param>
        public void RemoveLogger(ILog logger)
        {
            this.m_logs.Remove(logger);
        }
若汝棋茗 已提交
64 65 66 67 68 69 70 71 72 73

        /// <summary>
        /// 指定输出<see cref="LoggerGroup"/>中的特定类型的日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="source"></param>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public void Log<TLog>(LogType logType, object source, string message, Exception exception) where TLog : ILog
        {
若汝棋茗 已提交
74
            for (int i = 0; i < this.m_logs.Count; i++)
若汝棋茗 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
            {
                ILog log = this.Logs[i];
                if (log.GetType() == typeof(TLog))
                {
                    log.Log(logType, source, message, exception);
                }
            }
        }

        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="source"></param>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        protected override void WriteLog(LogType logType, object source, string message, Exception exception)
        {
若汝棋茗 已提交
93
            for (int i = 0; i < this.m_logs.Count; i++)
若汝棋茗 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
            {
                this.Logs[i].Log(logType, source, message, exception);
            }
        }
    }

    /// <summary>
    /// 一组日志记录器
    /// </summary>
    /// <typeparam name="TLog1"></typeparam>
    /// <typeparam name="TLog2"></typeparam>
    public class LoggerGroup<TLog1, TLog2> : LoggerGroup
        where TLog1 : ILog
        where TLog2 : ILog
    {
        /// <summary>
        /// 一组日志记录器
        /// </summary>
        public LoggerGroup(TLog1 log1, TLog2 log2) : base(log1, log2)
        {
        }
    }

    /// <summary>
    /// 一组日志记录器
    /// </summary>
    /// <typeparam name="TLog1"></typeparam>
    /// <typeparam name="TLog2"></typeparam>
    /// <typeparam name="TLog3"></typeparam>
若汝棋茗 已提交
123
    public class LoggerGroup<TLog1, TLog2, TLog3> : LoggerGroup
若汝棋茗 已提交
124 125 126 127 128 129 130
        where TLog1 : ILog
        where TLog2 : ILog
        where TLog3 : ILog
    {
        /// <summary>
        /// 一组日志记录器
        /// </summary>
若汝棋茗 已提交
131
        public LoggerGroup(TLog1 log1, TLog2 log2, TLog3 log3) : base(log1, log2, log3)
若汝棋茗 已提交
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
        {
        }
    }

    /// <summary>
    /// 一组日志记录器
    /// </summary>
    /// <typeparam name="TLog1"></typeparam>
    /// <typeparam name="TLog2"></typeparam>
    /// <typeparam name="TLog3"></typeparam>
    /// <typeparam name="TLog4"></typeparam>
    public class LoggerGroup<TLog1, TLog2, TLog3, TLog4> : LoggerGroup
        where TLog1 : ILog
        where TLog2 : ILog
        where TLog3 : ILog
        where TLog4 : ILog
    {
        /// <summary>
        /// 一组日志记录器
        /// </summary>
若汝棋茗 已提交
152
        public LoggerGroup(TLog1 log1, TLog2 log2, TLog3 log3, TLog4 log4) : base(log1, log2, log3, log4)
若汝棋茗 已提交
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
        {
        }
    }

    /// <summary>
    /// 一组日志记录器
    /// </summary>
    /// <typeparam name="TLog1"></typeparam>
    /// <typeparam name="TLog2"></typeparam>
    /// <typeparam name="TLog3"></typeparam>
    /// <typeparam name="TLog4"></typeparam>
    /// <typeparam name="TLog5"></typeparam>
    public class LoggerGroup<TLog1, TLog2, TLog3, TLog4, TLog5> : LoggerGroup
        where TLog1 : ILog
        where TLog2 : ILog
        where TLog3 : ILog
        where TLog4 : ILog
        where TLog5 : ILog
    {
        /// <summary>
        /// 一组日志记录器
        /// </summary>
若汝棋茗 已提交
175
        public LoggerGroup(TLog1 log1, TLog2 log2, TLog3 log3, TLog4 log4, TLog5 log5) : base(log1, log2, log3, log4, log5)
若汝棋茗 已提交
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
        {
        }
    }

    /// <summary>
    /// 一组日志记录器
    /// </summary>
    /// <typeparam name="TLog1"></typeparam>
    /// <typeparam name="TLog2"></typeparam>
    /// <typeparam name="TLog3"></typeparam>
    /// <typeparam name="TLog4"></typeparam>
    /// <typeparam name="TLog5"></typeparam>
    /// <typeparam name="TLog6"></typeparam>
    public class LoggerGroup<TLog1, TLog2, TLog3, TLog4, TLog5, TLog6> : LoggerGroup
       where TLog1 : ILog
       where TLog2 : ILog
       where TLog3 : ILog
       where TLog4 : ILog
       where TLog5 : ILog
       where TLog6 : ILog
    {
        /// <summary>
        /// 一组日志记录器
        /// </summary>
若汝棋茗 已提交
200
        public LoggerGroup(TLog1 log1, TLog2 log2, TLog3 log3, TLog4 log4, TLog5 log5, TLog6 log6) : base(log1, log2, log3, log4, log5, log6)
若汝棋茗 已提交
201 202 203 204
        {
        }
    }
}