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; } }
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>()); }
private static void Create(LogConfiguration config) { lock (configLock) { if (logSize[config] < config.MaxFileSize && logSize[config] != 0) { return; } config.CreateLogFile(); logSize[config] = 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); }
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(); } }
private static void Clear(LogConfiguration config) { config.DeleteLogFiles(); }
public Logger(LogConfiguration config) { Config = config; LogWriter.Init(Config); }