예제 #1
0
        private static IResolverLogger CombineLoggers(IResolverLogger lhv, IResolverLogger rhv)
        {
            if (lhv is null && rhv is null)
            {
                return(null);
            }
            if (lhv is null)
            {
                return(rhv);
            }
            if (rhv is null)
            {
                return(lhv);
            }

            var multiLogger = lhv as MultiLogger ?? rhv as MultiLogger ?? new MultiLogger();

            if (!ReferenceEquals(multiLogger, lhv))
            {
                multiLogger.AddLogger(lhv);
            }
            if (!ReferenceEquals(multiLogger, rhv))
            {
                multiLogger.AddLogger(rhv);
            }

            return(multiLogger);
        }
예제 #2
0
        public void AddLogger(IResolverLogger logger)
        {
            if (logger is null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _loggers.Add(logger);
        }
예제 #3
0
        public static IResolverLogger Build(LogType logType, string logFilePath)
        {
            IResolverLogger logger = default;

            if ((logType & LogType.Console) != 0)
            {
                logger = new ConsoleLogger();
            }
            if ((logType & LogType.File) != 0)
            {
                var stream       = new FileStream(logFilePath, FileMode.Append, FileAccess.Write);
                var streamLogger = new StreamLogger(stream);

                logger = CombineLoggers(logger, streamLogger);
            }

            if (logger is null)
            {
                logger = NullResolveLogger.Instance;
            }

            return(logger);
        }