zoukankan      html  css  js  c++  java
  • 记录日志(日志处理)

    1.对方法的调用:

    对日志加以分类处理,是的在项目中排查问题时,能够快速准确地定位错误,并迅速解决,从而极大程度上提高效率,利于整体的工作的开展。

    • TimeSpan理解:

    private string DateDiff(DateTime DateTime1, DateTime DateTime2)
    {string dateDiff = null;
      TimeSpan ts = DateTime1.Subtract(DateTime2).Duration(); dateDiff = ts.Days.ToString()+"天"+ ts.Hours.ToString()+"小时"+ ts.Minutes.ToString()+"分钟"+ ts.Seconds.ToString()+"秒";
    return dateDiff;
    }

    (1)DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间

    一个DateTime值代表了一个具体的时刻 ;

    (2)TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值

    下面的列表涵盖了其中的一部分:

    Add:与另一个TimeSpan值相加; Days:返回用天数计算的TimeSpan值。 Duration:获取TimeSpan的绝对值; 

    Hours:返回用小时计算的TimeSpan值 ;Milliseconds:返回用毫秒计算的TimeSpan值; Minutes:返回用分钟计算的TimeSpan值;

    Negate:返回当前实例的相反数; Seconds:返回用秒计算的TimeSpan值;Subtract:从中减去另一个TimeSpan值;

    Ticks:返回TimeSpan值的tick数; TotalDays:返回TimeSpan值表示的天数;TotalHours:返回TimeSpan值表示的小时数; 

    TotalMilliseconds:返回TimeSpan值表示的毫秒数; TotalMinutes:返回TimeSpan值表示的分钟数;TotalSeconds:返回TimeSpan值表示的秒数;

     1 #region 日志处理
     2 
     3             Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory + "InsureLog\" + "日志测试系统");          
     4             string strLog="4D5FE190-1CC6-4E88-97FE-E66A6868E3FB^57.7|BE7CCB47-2A09-4BCD-BBB4-8F3604B4226F^229|E2E352FA-A4A5-4DD5-B545-D5FD5274F220^4.90|";
     5             string strSysName="日志测试系统";
     6             string strEndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
     7             //保险系统名称、日志类型、日志内容、交易参数、交易结束时间
     8             LogProcess.RecordLog(strSysName, "1", strLog, "222", strEndTime);//2018-03-06 10:12:13.001         
     9             Console.WriteLine(strEndTime);
    10             #endregion 日志处理
    11             string str = strEndTime.Substring(strEndTime.Length - 3);//截取字符串最后的三位
    12             string str1 = strEndTime.Substring(0,strEndTime.Length - 4);//从右向左数,删去四位字符串
    13             Console.WriteLine(str+"|"+str1);
    14 
    15 
    16             DateTime str2 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
    17             DateTime str3 = Convert.ToDateTime("2018-03-07 15:06:07.001");
    18             TimeSpan ts = str2 - str3;
    19             string str4 = ts.Milliseconds.ToString();
    20             Console.WriteLine("测试时间:"+str4+"毫秒");
    21 
    22 
    23             Console.ReadKey();

    2.方法主体:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.IO;
      4 using System.Linq;
      5 using System.Text;
      6 using System.Windows.Forms;
      7 
      8 namespace TestPublicLog
      9 {
     10     public class LogProcess
     11     {
     12         private static string strStartTime="2018-03-07 15:13:01.001";//全局变量,记录日志开始时间    
     13             
     14         /// <summary>
     15         /// 记录日志处理
     16         /// </summary>
     17         /// <param name="strSysName">保险系统名称【不可空】</param>
     18         /// <param name="logType">日志类型:1表示正常日志,0表示异常日志【不可空】</param>
     19         /// <param name="logContent">日志内容【不可空】</param>
     20         /// <param name="tradeParameter">交易参数【可空】(存放重要入参)</param>
     21         /// <param name="logTime">记录时间(精确到ms毫秒),格式:yyyy-MM-dd HH:mm:ss.fff【可空】</param>
     22         public static void RecordLog(string strSysName, string logType, string logContent, string tradeParameter, string logTime)
     23         {           
     24             try
     25             {       
     26                 string strComPath = AppDomain.CurrentDomain.BaseDirectory + "InsureLog\" + strSysName;//路径公共部分
     27                 string normal_Path = strComPath + "\正常日志";              //正常日志保存路径
     28                 string abnormal_Path = strComPath + "\异常日志";            //异常日志保存路径
     29 
     30                 if (string.IsNullOrEmpty(logType))
     31                 {
     32                     MessageBox.Show("日志的【状态参数】或【类型参数】输入为空!", "调用医保日志写入方法失败:", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     33                     return;
     34                 }
     35                 else
     36                 {
     37                     if (logType == "0")
     38                     {
     39                         //调用创建日志文件方法,传入不同日志路径
     40                         GetLog(logType, strSysName, normal_Path, logTime, tradeParameter, logContent);  //在正常日志中写入日志
     41                         GetLog(logType, strSysName, abnormal_Path, logTime, tradeParameter, logContent);//在异常日志中写入日志
     42                     }
     43                     else if (logType == "1")
     44                     {
     45                         GetLog(logType, strSysName, normal_Path, logTime, tradeParameter, logContent);  //在正常日志中写入日志
     46                     }
     47                     else
     48                     {
     49                         MessageBox.Show("日志【类型参数】输入错误!", "调用医保日志写入方法失败:", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     50                         return;
     51                     }
     52                 }               
     53             }
     54             catch (Exception ex)
     55             {
     56                 MessageBox.Show("医保日志写入失败:" + ex.ToString(), "运行时错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     57             }
     58         }      
     59 
     60         #region 创建日志文件      
     61         /// <summary>
     62         /// 创建日志文件
     63         /// </summary>
     64         /// <param name="logType">日志类型</param>
     65         /// <param name="strSysName">保险系统名称</param>
     66         /// <param name="m_path">日志路径</param>
     67         /// <param name="logTime">记录日志的时间</param>
     68         /// <param name="tradeParameter">交易参数</param>
     69         /// <param name="logContent">日志内容</param>
     70         public static void GetLog(string logType, string strSysName, string m_path, string logTime, string tradeParameter, string logContent)
     71         {
     72             try
     73             {
     74                 string fileName = "LogRecord_" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
     75                 DirectoryInfo m_DirInfo = new DirectoryInfo(m_path);
     76                 if (!m_DirInfo.Exists)
     77                 {
     78                     Directory.CreateDirectory(m_path);//创建文件夹
     79                 }
     80                 FileStream fs = new FileStream(m_path + "\" + fileName, FileMode.Append, FileAccess.Write);
     81                 StreamWriter sw = new StreamWriter(fs);   //文件流
     82                 if (string.IsNullOrEmpty(logTime))
     83                 {
     84                     //获取开始时间(精确到ms毫秒)
     85                     strStartTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
     86                     if (string.IsNullOrEmpty(tradeParameter))
     87                     {
     88                         sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "
    " + "日志内容:" + logContent + "
    ");//正式使用时,须获取服务器时间
     89                     }
     90                     else
     91                     {
     92                         sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "
    " + "日志内容:" + logContent + "
    " + "交易参数:" + tradeParameter + "
    ");//正式使用时,须获取服务器时间
     93                     }
     94                 }
     95                 else
     96                 {
     97                     string getTimeDiffer = GetTimeDiffer(strStartTime, logTime);
     98                     if (getTimeDiffer == "0")
     99                     {
    100                         MessageBox.Show("获取交易耗时失败!");
    101                     }
    102                     else
    103                     {
    104                         if (string.IsNullOrEmpty(tradeParameter))
    105                         {
    106                             sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + "本次交易耗时:" + getTimeDiffer + "
    " + "日志内容:" + logContent + "
    ");
    107                         }
    108                         else
    109                         {
    110                             sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + "本次交易耗时:" + getTimeDiffer + "
    " + "日志内容:" + logContent + "
    " + "交易参数:" + tradeParameter + "
    ");
    111                         }
    112                     }
    113                 }
    114                 sw.Close();
    115                 fs.Close();
    116             }
    117             catch (Exception ex)
    118             {
    119                 MessageBox.Show("创建日志错误:"+ex.ToString(), "调用【创建日志文件】方法失败:", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    120             }
    121         }
    122         #endregion 创建日志文件 结束
    123 
    124         #region 解析时间差(计算耗时)
    125         /// <summary>
    126         /// 解析时间差(计算耗时)
    127         /// </summary>
    128         /// <param name="strStartTime">开始时间</param>
    129         /// <param name="strEndTime">结束时间,即传入的时间</param>
    130         /// <returns></returns>
    131         public static string GetTimeDiffer(string strStartTime, string strEndTime)
    132         {
    133             try
    134             {
    135                 // string类型转DateTime类型
    136                 DateTime strTimeStart = Convert.ToDateTime(strStartTime);
    137                 DateTime strTimeEnd = Convert.ToDateTime(strEndTime);
    138                 string dateDiff = null;//定义时间差值
    139                 //定义时间间隔
    140                 TimeSpan startTime = new TimeSpan(strTimeStart.Ticks);
    141                 TimeSpan endTime = new TimeSpan(strTimeEnd.Ticks);
    142                 TimeSpan ts = endTime.Subtract(startTime).Duration();
    143                 //显示时间
    144                 //ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟"
    145                 dateDiff = ts.Seconds.ToString() + "" + ts.Milliseconds.ToString() + "毫秒";
    146                 return dateDiff;
    147             }
    148             catch (Exception ex)
    149             {
    150                 MessageBox.Show("获取时间差值失败:" + ex.ToString(), "运行时错误", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    151                 return "0";
    152             }
    153 
    154         }
    155         #endregion 解析时间差(计算耗时)结束
    156     }
    157 }
  • 相关阅读:
    deepin系统安装php扩展(或者统信UOS系统)
    前后端分离项目,访问后端接口跨域问题解决办法
    python打乱一个文件行数据
    python获取文件行数
    SQL进阶
    方便下载书籍网站
    gpuz软件下载
    U盘制作-安装win10系统
    docker -Docker安装FileBrowser实现网页版文件管理器
    OCP 063中文考试题库(cuug内部资料)第44题
  • 原文地址:https://www.cnblogs.com/pang951189/p/8525234.html
Copyright © 2011-2022 走看看