Utils/FileLogger.cs

68 lines
2.0 KiB
C#
Raw Normal View History

2015-11-16 00:38:57 +01:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
2015-11-16 00:38:57 +01:00
namespace BlubbFish.Utils
{
public class FileLogger
{
private static Dictionary<String, FileLogger> instances = new Dictionary<String, FileLogger>();
private static String logDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar;
private StreamWriter file;
private FileLogger(String filename, Boolean append)
{
filename = logDir + filename;
if (!File.Exists(filename)) {
String folder = Path.GetDirectoryName(Path.GetFullPath(filename));
if (!Directory.Exists(folder)) {
Directory.CreateDirectory(folder);
2015-11-16 00:38:57 +01:00
}
}
this.file = new StreamWriter(filename, append, Encoding.UTF8) {
AutoFlush = true
};
}
public static FileLogger GetInstance(String filename, Boolean append)
{
if (!instances.Keys.Contains(filename)) {
instances.Add(filename, new FileLogger(filename, append));
}
return instances[filename];
}
2015-11-16 00:38:57 +01:00
public static void SetLogDir(String v)
{
v = v.Replace("..", "");
v = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar + v;
if (Directory.Exists(v)) {
logDir = v;
} else {
Directory.CreateDirectory(v);
logDir = v;
}
if (logDir.Substring(logDir.Length - 1) != Path.DirectorySeparatorChar.ToString()) {
logDir = logDir + Path.DirectorySeparatorChar;
}
}
public void SetArray(String[] text)
{
this.file.Write(String.Join(this.file.NewLine, text) + this.file.NewLine);
this.file.Flush();
}
2015-11-16 00:38:57 +01:00
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);
2015-11-16 00:38:57 +01:00
}
}
2015-11-16 00:38:57 +01:00
}