FileLogger.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace MediaBrowser.Common.Logging
  5. {
  6. public class FileLogger : BaseLogger, IDisposable
  7. {
  8. private string LogDirectory { get; set; }
  9. private string CurrentLogFile { get; set; }
  10. private FileStream FileStream { get; set; }
  11. public FileLogger(string logDirectory)
  12. {
  13. LogDirectory = logDirectory;
  14. }
  15. private void EnsureStream()
  16. {
  17. if (FileStream == null)
  18. {
  19. if (!Directory.Exists(LogDirectory))
  20. {
  21. Directory.CreateDirectory(LogDirectory);
  22. }
  23. DateTime now = DateTime.Now;
  24. CurrentLogFile = Path.Combine(LogDirectory, now.ToString("dMyyyy") + "-" + now.Ticks + ".log");
  25. FileStream = new FileStream(CurrentLogFile, FileMode.Append, FileAccess.Write, FileShare.Read);
  26. }
  27. }
  28. protected override void LogEntry(LogRow row)
  29. {
  30. EnsureStream();
  31. byte[] bytes = new UTF8Encoding().GetBytes(row.ToString() + Environment.NewLine);
  32. FileStream.Write(bytes, 0, bytes.Length);
  33. FileStream.Flush();
  34. }
  35. public void Dispose()
  36. {
  37. if (FileStream != null)
  38. {
  39. FileStream.Dispose();
  40. }
  41. }
  42. }
  43. }