From 845b7333264ffa80422ff061ab93f34acd7fb184 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Tue, 26 Jan 2016 14:20:42 +0000 Subject: [PATCH] First Version Ever that runs a little bit --- FileLogger.cs | 70 +++++++++++++++++++----------------------- bin/Release/Utils.dll | Bin 15872 -> 15360 bytes 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/FileLogger.cs b/FileLogger.cs index 6157d7d..a49364c 100644 --- a/FileLogger.cs +++ b/FileLogger.cs @@ -4,44 +4,38 @@ using System.Linq; using System.Text; using System.IO; -namespace BlubbFish.Utils -{ - public class FileLogger - { - private static Dictionary instances = new Dictionary(); - private StreamWriter file; - private FileLogger(string filename, bool append) - { - if (!File.Exists(filename)) - { - string folder = Path.GetDirectoryName(Path.GetFullPath(filename)); - if (!Directory.Exists(folder)) - { - Directory.CreateDirectory(folder); - } - } - this.file = new StreamWriter(filename, append, Encoding.UTF8); - this.file.AutoFlush = true; - } - public static FileLogger getInstance(string filename, bool append) - { - if (!instances.Keys.Contains(filename)) - { - instances.Add(filename, new FileLogger(filename, append)); - } - return instances[filename]; - } - - public void setArray(string[] text) - { - this.file.Write(String.Join(file.NewLine, text) + file.NewLine); - this.file.Flush(); - } - - public void setLine(string text) - { - this.file.WriteLine(text); - this.file.Flush(); +namespace BlubbFish.Utils { + public class FileLogger { + private static Dictionary instances = new Dictionary(); + private StreamWriter file; + private FileLogger(string filename, bool append) { + if(!File.Exists(filename)) { + string folder = Path.GetDirectoryName(Path.GetFullPath(filename)); + if(!Directory.Exists(folder)) { + Directory.CreateDirectory(folder); } + } + this.file = new StreamWriter(filename, append, Encoding.UTF8); + this.file.AutoFlush = true; } + public static FileLogger getInstance(string filename, bool append) { + if(!instances.Keys.Contains(filename)) { + instances.Add(filename, new FileLogger(filename, append)); + } + return instances[filename]; + } + + public void setArray(string[] text) { + this.file.Write(String.Join(file.NewLine, text) + file.NewLine); + this.file.Flush(); + } + + public void setLine(string text) { + this.file.WriteLine(text); + this.file.Flush(); + } + public void setLine(string text, DateTime d) { + this.setLine(d.ToString("[yyyy-MM-dd HH:mm:ss.ffff] " + text)); + } + } } diff --git a/bin/Release/Utils.dll b/bin/Release/Utils.dll index 914f560112019800d2705fd28ec0990063e63f9a..0dd4d12bc1c9f7fd4d4d12304de54df21abd4a70 100644 GIT binary patch literal 15360 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 J|L;cNzXA9WR9^r9