C#之日志

来源:互联网 发布:淘宝客服的工作职责 编辑:程序博客网 时间:2024/06/06 18:49

今天看了一篇开发的文章,上面说“尽早地添加日志记录和错误处理”。

日志-程序中发生了什么。

1 需要数据

方法参数:
  1. 日志存放的文件夹-创建路径
  2. 日志类型标识-创建路径
  3. 方法名称-创建路径、写入日志
  4. 方法参数-写入日志
  5. 方法返回的结果(可为异常信息)-写入日志
从配置文件中获取:
  1. 日志路径-创建路径
  2. 程序运行环境标识
其他:
  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); }        }    }}

3 配置web.config的方法


4 日志



0 0