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