对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等。
首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager:
编写如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
/// <summary>
/// 日志管理
/// </summary>
public class LogManager
{
private string _logDir; // 日志文件存放目录
private static LogManager m_LogInstance; // 静态单例对象
// 静态构造函数
static LogManager()
{
m_LogInstance = new LogManager();
}
// 私有构造函数(必备函数,不允许外部对该类进行实例化)
private LogManager()
{
_logDir = Environment.CurrentDirectory + "\\Log" ;
this .DelOldFile();
}
/// <summary>
/// 属性获取单例对象
/// </summary>
public static LogManager LogInstance
{
get { return m_LogInstance; }
}
/// <summary>
/// 写入一条日志记录
/// </summary>
/// <param name="pLog">日志记录内容</param>
public void WriteLog( string pLog)
{
lock ( this ._logDir) //排它锁:防止主程序中出现多线程同时访问同一个文件出错
{
// 根据时间创建一个日志文件
var vDT = DateTime.Now;
string vLogFile = string .Format( "{0}\\Log{1}{2}{3}.log" ,_logDir,vDT.Year,vDT.Month,vDT.Day);
// 创建文件流,用于写入
using (FileStream fs = new FileStream(vLogFile, FileMode.Append))
{
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine( "{0} >> {1}" , vDT.ToString( "yyyy-MM-dd HH:mm:ss" ), pLog);
sw.Flush();
sw.Close();
fs.Close();
}
}
}
// 删除过期文件
private void DelOldFile()
{
// 遍历指定文件夹下所有子文件,将一定期限前的日志文件删除。
if (!Directory.Exists( this ._logDir))
{
// 如果文件夹目录不存在
Directory.CreateDirectory( this ._logDir);
return ;
}
var vFiles = ( new DirectoryInfo( this ._logDir)).GetFiles();
for ( int i = vFiles.Length - 1; i >= 0; i--)
{
// 指定条件,然后删除
if (vFiles[i].Name.Contains( "Log" ))
{
if ((DateTime.Now - vFiles[i].LastWriteTime).Days > 7)
{
vFiles[i].Delete();
}
}
}
}
} // end class
|
其中,第8行-第26行是关于实现单例模式的一种方法。这样,在你程序的需要位置执行:
LogManager.LogInstance.WriteLog("产生了一条日志记录");
就会在指定文件中参数一条日志记录了。
即:2016-11-23 23:53:45 >> 产生了一条日志记录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/CUIT-DX037/p/6096135.html