工作中经常要用到将信息写入文本,网上也有很多出名的工具包,如:log4net,也有很多大神写了各种库,但每次都要各种配置,或者就是有些功能不需要,觉得用的不是很爽,本身需求只是简单的记录而已,所以写了个简单的写入类,功能比较单一,适合初学者
public class Logger
{
private static string logdir = System.AppDomain.CurrentDomain.BaseDirectory + "/log/";
private static string logfilename = logdir + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
private static Logger logger = null;
private static object _lock = new object();
private Logger() { }
public static Logger GetLogger()
{
if (logger == null)
{
if (!Directory.Exists(logdir))
Directory.CreateDirectory(logdir);
logger = new Logger();
}
return logger;
}
public static int i = 0;
public void WriteLog(string content)
{
Task.Factory.StartNew(() =>
{
lock (_lock)
{
FileStream _filestream;
if (!File.Exists(logfilename))
_filestream = new FileStream(logfilename, System.IO.FileMode.Create);
else
_filestream = new FileStream(Logger.logfilename, FileMode.Append, FileAccess.Write);
using (_filestream)
{
using (var sw = new StreamWriter(_filestream, Encoding.Default))
{
sw.WriteLine("[{0}]:{1}_{2}", DateTime.Now.ToString(), content, i++);
}
}
//System.Threading.Thread.Sleep(1000*4);
}
});
}
}
调用测试:
class Program
{
static void Main(string[] args)
{
for (var i = 0; i < 99999999; i++)
{
var _task = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
var _content = DateTime.Now.ToString();
WLX.SimpleLogger.Logger.GetLogger().WriteLog(_content);
});
}
Console.ReadKey();
}
}