From b50f78e5da6f3fdfc59e577ca61b88771da7d211 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Thu, 12 Jul 2012 02:55:27 -0400 Subject: Initial check-in --- MediaBrowser.Common/Logging/FileLogger.cs | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 MediaBrowser.Common/Logging/FileLogger.cs (limited to 'MediaBrowser.Common/Logging/FileLogger.cs') diff --git a/MediaBrowser.Common/Logging/FileLogger.cs b/MediaBrowser.Common/Logging/FileLogger.cs new file mode 100644 index 000000000..33c64b139 --- /dev/null +++ b/MediaBrowser.Common/Logging/FileLogger.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Text; + +namespace MediaBrowser.Common.Logging +{ + public class FileLogger : BaseLogger, IDisposable + { + private string LogDirectory { get; set; } + private string CurrentLogFile { get; set; } + + private FileStream FileStream { get; set; } + + public FileLogger(string logDirectory) + { + LogDirectory = logDirectory; + } + + private void EnsureStream() + { + if (FileStream == null) + { + if (!Directory.Exists(LogDirectory)) + { + Directory.CreateDirectory(LogDirectory); + } + + DateTime now = DateTime.Now; + + CurrentLogFile = Path.Combine(LogDirectory, now.ToString("dMyyyy") + "-" + now.Ticks + ".log"); + + FileStream = new FileStream(CurrentLogFile, FileMode.Append, FileAccess.Write, FileShare.Read); + } + } + + protected override void LogEntry(LogRow row) + { + EnsureStream(); + + byte[] bytes = new UTF8Encoding().GetBytes(row.ToString() + Environment.NewLine); + + FileStream.Write(bytes, 0, bytes.Length); + + FileStream.Flush(); + } + + public void Dispose() + { + if (FileStream != null) + { + FileStream.Dispose(); + } + } + } +} -- cgit v1.2.3