using System;
using System.IO;
using System.Text;
namespace OS.Common.LogModule
{
internal class LogWriter : ILogWriter
{
private readonly string logDirPath = null;
private const string logFormat = "{0:T} {1} {2}:{3}";
public LogWriter()
{
logDirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"log\");
if (!Directory.Exists(logDirPath))
Directory.CreateDirectory(logDirPath);
}
private string getLogFilePath(string type)
{
StringBuilder sb = new StringBuilder(logDirPath);
sb.Append(DateTime.Now.ToString("yyyyMMdd"));
sb.Append("_");
sb.Append(type);
sb.Append(".txt");
return sb.ToString();
}
private object obj = new object();
///
/// 写日志
///
///
public void WriteLog(LogInfo info)
{
lock (obj)
{
using (StreamWriter sw = new StreamWriter(getLogFilePath(info.Level.ToString()), true, Encoding.Default))
{
sw.WriteLine(logFormat, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), info.Key, info.ModuleName, info.Message);
sw.Close();
}
}
}
}
}