示例#1
0
        internal static void Log(LogConfiguration config, MethodBase?method, string message, LogLevel level)
        {
            if (level < config.LogLevel)
            {
                return;
            }

            lock (configLock)
            {
                // If we race, we may hit this lock first. So we should always make sure that the buffer
                // is initialized before we use it.
                if (!logs.ContainsKey(config))
                {
                    logs.Add(config, new List <LogItem>());
                    logSize.Add(config, 0);
                }

                logs[config].Add(new LogItem(method, message, level));
            }

            lock (logBufferInUseLock)
            {
                logBufferInUse = true;
            }
        }
示例#2
0
        private static List <LogItem> GetLogBuffer(LogConfiguration config)
        {
            List <LogItem>?threadLogBuffer = null;

            lock (configLock)
            {
                threadLogBuffer = new List <LogItem>(logs[config]);
                logs[config].Clear();
            }

            return(threadLogBuffer ?? new List <LogItem>());
        }
示例#3
0
        private static void Create(LogConfiguration config)
        {
            lock (configLock)
            {
                if (logSize[config] < config.MaxFileSize && logSize[config] != 0)
                {
                    return;
                }

                config.CreateLogFile();

                logSize[config] = 0;
            }
        }
示例#4
0
        private static void Output(LogConfiguration config, LogItem log)
        {
            string logOutput = log.ToString();

            lock (configLock)
            {
                using (StreamWriter writer = new StreamWriter(config.GetFullPath(), true))
                {
                    writer.WriteLine(logOutput);
                    logSize[config] = logSize[config] + 1;
                }
            }

            Create(config);
        }
示例#5
0
        internal static void Init(LogConfiguration logConfig)
        {
            lock (configLock)
            {
                if (!logs.ContainsKey(logConfig))
                {
                    Clear(logConfig);
                    logs.Add(logConfig, new List <LogItem>());
                    logSize.Add(logConfig, 0);
                    Create(logConfig);
                }
            }

            logBufferInUse = true;
            shouldExecute  = true;

            if (loggingThread == null)
            {
                loggingThread = new Thread(new ThreadStart(Logging));
                loggingThread.Start();
            }
        }
示例#6
0
 private static void Clear(LogConfiguration config)
 {
     config.DeleteLogFiles();
 }
示例#7
0
        public Logger(LogConfiguration config)
        {
            Config = config;

            LogWriter.Init(Config);
        }