C#之日志

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

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

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 日志



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值