今天看了一篇开发的文章,上面说“尽早地添加日志记录和错误处理”。
日志-程序中发生了什么。
1 需要数据
方法参数:
- 日志存放的文件夹-创建路径
- 日志类型标识-创建路径
- 方法名称-创建路径、写入日志
- 方法参数-写入日志
- 方法返回的结果(可为异常信息)-写入日志
- 日志路径-创建路径
- 程序运行环境标识
- 时间-创建路径、写入日志
2 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace 控制台应用程序_测试
{
public class Logger
{
/// <summary>
/// 写日志
/// </summary>
/// <param name="folderName">日志存放的文件夹</param>
/// <param name="logMark">日志类型标识:info-调用日志,error-错误日志,dev-开发日志,test-测试日志</param>
/// <param name="methodName">方法名称</param>
/// <param name="methodParam">方法参数</param>
/// <param name="methodReturn">方法返回结果(可为异常)</param>
public static void log(string folderName, string logMark, string methodName, string methodParam, string methodReturn)
{
try
{
//string folders = System.Configuration.ConfigurationManager.AppSettings["runMark"].ToString();//从配置文件Web.config中获取日志文件路径
string runMark = "dev";//程序运行环境标识:dev-开发-显示所有日志,test-测试-不显示开发日志,onLine-上线-不显示开发、测试日志
if (runMark.Equals("dev") || (runMark.Equals("test") && (!logMark.Equals("dev")) || (runMark.Equals("onLine") && (!(logMark.Equals("dev") || logMark.Equals("test"))))))//判断是否需要写日志
{
DateTime now = DateTime.Now;
//string folders = System.Configuration.ConfigurationManager.AppSettings["LogPath"].ToString();//从配置文件Web.config中获取日志文件路径
string folders = "E:\\Log";//日志路径
folders = folders + "\\" + folderName + "\\" + now.Year + "\\" + now.Month + "\\"+"\\"+logMark;
//判断文件夹是否存在,不存在则创建
if(!Directory.Exists(folders))
{
Console.WriteLine("文件夹不存在");
Directory.CreateDirectory(folders);
}
FileInfo logFile = new FileInfo(folders);
string strPath = String.Format("{0}/{1}_{2}_{3:yyyy-MM-dd}.txt", logFile, methodName, logMark, now);
StreamWriter _sw = new StreamWriter(strPath, true, Encoding.GetEncoding("UTF-8"));//创建文件
try
{
_sw.WriteLine();
_sw.WriteLine("时间:" + DateTime.Now);
_sw.WriteLine("方法:" + methodName);
_sw.WriteLine("参数:" + methodParam);
string temp;
switch (logMark)
{
case "info":
temp = "返回";
break;
case "error":
temp = "错误";
break;
default:
temp = "信息";
break;
}
_sw.WriteLine(temp + ":");
_sw.WriteLine(methodReturn);
_sw.WriteLine("***********************************************************************");
_sw.Flush();
}
catch (Exception ex) { }
finally
{
_sw.Dispose();//释放由 TextReader 对象使用的所有资源。
_sw.Close();
}
}
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
}
}
}