using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
namespace functiontest
{
/// <summary>
///打印日誌
///XingSQ
/// 2015-12-10
/// </summary>
public class Log
{
/// <summary>
/// 構造日誌對象
/// </summary>
public Log()
{
logfilename = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "heatweblog.log";
}
/// <summary>
/// 構造日誌對象
/// </summary>
/// <param name="path">日誌所在路徑</param>
public Log(string path)
{
logfilename = path + "\\log.log";
}
/// <summary>
/// 建立log文件
/// </summary>
/// <param name="path"></param>
private void CreateFile(string path)
{
if (!File.Exists(path))
{
File.Create(path).Close();
}
}
/// <summary>
/// 寫log日誌
/// </summary>
/// <param name="title1">標題1</param>
/// <param name="title2">標題2</param>
/// <param name="logtext">log內容</param>
public void WriteLog(string title1, string title2, string logtext)
{
try
{
CreateFile(logfilename);
StreamWriter writer = File.AppendText(logfilename);
writer.WriteLine(DateTime.Now.ToString() + "--------" + title1 + "--------" + title2 + "--------" + logtext);
writer.Flush();
writer.Close();
FileSlim(logfilename, 100);
}
catch (Exception e)
{
throw (e);
}
}
/// <summary>
/// 寫log日誌(只在debug 狀態下執行)
/// </summary>
/// <param name="title1">標題1</param>
/// <param name="title2">標題2</param>
/// <param name="logtext">log內容</param>
[Conditional("DEBUG")]
public void WriteLogBug(string title1, string title2, string logtext)
{
try
{
CreateFile(logfilename);
StreamWriter writer = File.AppendText(logfilename);
writer.WriteLine(DateTime.Now.ToString() + "--------" + title1 + "--------" + title2 + "--------" + logtext);
writer.Flush();
writer.Close();
FileSlim(logfilename, 100);
}
catch (Exception e)
{
throw (e);
}
}
/// <summary>
/// 寫log日誌
/// </summary>
/// <param name="logtext">日誌內容</param>
public void WriteLog(string logtext)
{
try
{
CreateFile(logfilename);
StreamWriter writer = File.AppendText(logfilename);
writer.WriteLine(DateTime.Now.ToString() + "--------" + logtext);
writer.Flush();
writer.Close();
FileSlim(logfilename, 100);
}
catch (Exception e)
{
throw (e);
}
}
/// <summary>
/// 寫log日誌(只在debug 狀態下執行)
/// </summary>
/// <param name="logtext">日誌內容</param>
[Conditional("DEBUG")]
public void WriteLogDebug(string logtext)
{
try
{
CreateFile(logfilename);
StreamWriter writer = File.AppendText(logfilename);
writer.WriteLine(DateTime.Now.ToString() + "--------" + logtext);
writer.Flush();
writer.Close();
FileSlim(logfilename, 100);
}
catch (Exception e)
{
throw (e);
}
}
/// <summary>
/// 取的文件大小(單位:字節)
/// </summary>
/// <param name="filepath">文件完成路徑(包括文件名)</param>
/// <returns>文件大小(單位:字節)</returns>
private long GetFileSize(string filepath)
{
FileInfo finfo = new FileInfo(filepath);
return finfo.Length;
}
/// <summary>
/// 給文件瘦身,當超過指定大小是就刪除文件內容使其只剩intLineNum行
/// </summary>
/// <param name="filepath">文件完成路徑(包括文件名)</param>
/// <param name="size">文件大小(單位:K字節)</param>
/// <returns></returns>
private bool FileSlim(string filepath, long size)
{
try
{
if (GetFileSize(filepath) >= 1024 * size)
{
string[] strArray = File.ReadAllLines(filepath, Encoding.GetEncoding("UTF-8"));
int lines = strArray.Length - intLineNum;
IList<string> strlist = strArray.ToList<string>();
//刪除list中的指定行數
for (int i = 0; i < lines; i++)
{
strlist.RemoveAt(0);
}
strlist.Add("\r\n");
//把list剩餘行寫回文件
File.WriteAllText(filepath, string.Join("\r\n", strlist.ToArray<string>()), Encoding.GetEncoding("UTF-8"));
}
return true;
}
catch (Exception e)
{
throw (e);
}
}
private string logfilename;
private const int intLineNum = 200; //保留行數
}
}
web