using LJLib.Tools.File;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace LJLib.TextLog
{
internal class RequestLogger : ILogger
{
private readonly string _logDir;
private readonly object _syncRoot = new object();
public RequestLogger()
{
_logDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log");
if (!Directory.Exists(_logDir)) Directory.CreateDirectory(_logDir);
}
///
/// 获取今天的日志文件全路径
///
private string GetTodayLogFile()
{
string fileName = $"REQUEST_{DateTime.Now:yyyyMMdd}.log";
return Path.Combine(_logDir, fileName);
}
///
/// 写入日志
///
public void WriteLog(string msg)
{
try
{
lock (_syncRoot)
{
string filePath = GetTodayLogFile();
using (StreamWriter sw = new StreamWriter(filePath, true))
{
sw.WriteLine("====================================================================");
sw.WriteLine($"时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
sw.WriteLine("--------------------------------------------------------------------");
sw.WriteLine(msg);
sw.WriteLine("====================================================================");
sw.WriteLine();
}
}
}
catch(Exception ex)
{
// 这里可考虑写到系统事件日志或忽略
Trace.Write(ex);
}
}
}
}