Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using System.Threading;
- namespace SharedLibrary
- {
- public class Logger
- {
- readonly string path;
- private ConcurrentQueue<string> logQueue;
- private Thread logThread;
- public Logger()
- {
- logQueue = new ConcurrentQueue<string>();
- logThread = new Thread(new ThreadStart(processQueue));
- logThread.Start();
- string yearDir = DateTime.Now.ToString("yyyy");
- string monthDir = DateTime.Now.ToString("MMMM");
- string dayDir = DateTime.Now.ToString("dd");
- string time = DateTime.Now.TimeOfDay.ToString().Replace(':',' ');
- path = String.Format("Logs/{0}/{1}/{2}/{3}.txt", yearDir, monthDir, dayDir, time);
- if (!Directory.Exists("Logs"))
- Directory.CreateDirectory("Logs");
- if (!Directory.Exists("Logs/"+yearDir))
- Directory.CreateDirectory("Logs/" + yearDir);
- if (!Directory.Exists("Logs/" + yearDir +"/"+monthDir))
- Directory.CreateDirectory("Logs/" + yearDir + "/" + monthDir);
- if (!Directory.Exists("Logs/" + yearDir +"/"+monthDir+"/"+dayDir))
- Directory.CreateDirectory("Logs/" + yearDir + "/" + monthDir + "/" + dayDir);
- if (!File.Exists(path))
- File.Create(path).Dispose();
- WriteLine("Logger initialized.");
- }
- void processQueue()
- {
- while (true)
- {
- lock (logQueue)
- {
- for (int i = 0; i < (logQueue.Count < 10 ? logQueue.Count : 10); i++)
- {
- string logItem;
- if (logQueue.TryDequeue(out logItem))
- using (StreamWriter wrtr = new StreamWriter(path))
- {
- wrtr.WriteLine(logItem);
- wrtr.Close();
- }
- }
- }
- Thread.Sleep(1000);
- }
- }
- public void WriteLine(string value)
- {
- string toWrite = String.Format("[{0}] {1}", DateTime.Now.ToShortTimeString(), value);
- logQueue.Enqueue(toWrite);
- Console.WriteLine(toWrite);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement