aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Logging/FileLogger.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common/Logging/FileLogger.cs')
-rw-r--r--MediaBrowser.Common/Logging/FileLogger.cs55
1 files changed, 55 insertions, 0 deletions
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();
+ }
+ }
+ }
+}