GQ_Communicate/GQ_URP/GQ/Assets/ZLog/FileLogger.cs

91 lines
2.6 KiB
C#

using System;
using System.IO;
using UnityEngine;
//namespace ZTools
//{
public class FileLogger /*: MonoBehaviour*/
{
private StreamWriter fileWriter;
private string filename = "";
private string filePath = "";
private static string CurrentDay { get { return DateTime.Now.ToString("yyyyMMdd"); } }
private string CurrentLogDay = "";
private string PreSavePath;
/// <summary>
/// 开始打印
/// </summary>
/// <param name="logfile"></param>
public FileLogger()
{
filename = ZLog.LogFileName;
filePath = ZLog.LogPath.TrimEnd('/') + "/";
StartNewFile();
DeleteOldFile();
CurrentLogDay = CurrentDay;
this.Write("*********************************************************\nSystem Start at " + DateTime.Now.ToString("HH:mm:ss") + "\n*********************************************************\n");
}
/// <summary>
/// 新建文件
/// </summary>
private void StartNewFile()
{
if (fileWriter != null)
{
fileWriter.Close();
fileWriter.Dispose();
}
fileWriter = null;
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
fileWriter = File.AppendText(filePath + string.Format(this.filename, DateTime.Now));
}
public void Write(string content)
{
System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
if (CurrentLogDay != CurrentDay)
{
this.filename = ZLog.LogFileName;
StartNewFile();
DeleteOldFile();
CurrentLogDay = CurrentDay;
}
if (fileWriter != null && fileWriter.BaseStream != null && fileWriter.BaseStream.CanWrite)
fileWriter.WriteLine(content);
}
void DeleteOldFile()
{
string[] fileList = Directory.GetFiles(filePath);
if (fileList.Length > ZLog.SaveDays)
{
PreSavePath = filePath + string.Format(this.filename, DateTime.Now.AddDays(-ZLog.SaveDays + 1));
for (int i = 0; i < fileList.Length; i++)
{
if (string.Compare(PreSavePath, fileList[i]) == 1)
{
File.Delete(fileList[i]);
}
}
}
}
public void OnDestroy()
{
if (fileWriter == null)
return;
this.Write("*********************************************************\nSystem Shutdown at " + DateTime.Now.ToString("HH:mm:ss") + "\n*********************************************************\n");
fileWriter.Flush();
fileWriter.Close();
fileWriter = null;
}
}
//}