LogsHelper

 // <summary>
        /// 写收到的数据和回发的数据
        /// </summary>
        /// <param name="strdata">要写的数据</param>
        public void Writelog(string strdata)
        {
            try
            {
                //写日志到文件
                StreamWriter sw = new StreamWriter(@getFilePath("data_" + System.DateTime.Now.ToString("yyMMddhh") + ".log"), true);//getDateString()
                sw.Write(strdata);
                sw.Write("\r\n");
                sw.Close();
                sw.Dispose();
            }
            catch (Exception e)
            {
                try
                {
                    //写日志到文件
                    StreamWriter sw = new StreamWriter(@getFilePath("error.log"), true);
                    sw.Write(strdata);
                    sw.Write("\r\n");
                    sw.Write("Time: {0}", getNowTimeString());
                    sw.Write("\r\n");
                    sw.Write(e.ToString());
                    sw.Write("\r\n");
                    sw.Close();
                    sw.Dispose();
                }
                catch { }
            }
        }
        // <summary>
        /// 写日志
        /// </summary>
        /// <param name="content">日志内容</param>
        public void RecLog(string content)
        {
            try
            {
                //写日志到文件
                StreamWriter sw = new StreamWriter(@getFilePath("data_" + getDateString() + ".log"), true);
                sw.Write(string.Format("[{0}] {1}", getNowTimeString(), content));//格式:[时间] 日志内容
                sw.Write("\r\n");
                sw.Close();
                sw.Dispose();
            }
            catch (Exception e)
            {
                try
                {
                    //写日志到文件
                    StreamWriter sw = new StreamWriter(@getFilePath("error.log"), true);
                    sw.Write(string.Format("[{0}] {1}", getNowTimeString(), content));
                    sw.Write("\r\n");
                    sw.Write(string.Format("[{0}] {1}", getNowTimeString(), e.ToString()));
                    sw.Close();
                    sw.Dispose();
                }
                catch { }
            }
        }

        /// <summary>
        /// 获取文件完整路径
        /// </summary>
        /// <param name="filename">文件名</param>
        /// <returns>文件的完整路径</returns>
        public string getFilePath(string filename)
        {
            string path;
            path = Application.StartupPath + "\\" + filename;
            return path;
        }
        /// <summary>
        /// 十六进制转成字节
        /// </summary>
        /// <param name="aHex"></param>
        /// <returns></returns>
        public string HexToBytes(string aHex)
        {
            aHex = aHex.ToUpper();
            int len = aHex.Length;
            string ss = "";
            string sss = "";
            for (int i = 1; i <= len; i++)
            {
                string s = "";
                s = aHex.Substring(i - 1, 1);
                switch (s)
                {
                    case "0":
                        ss = "0000";
                        break;
                    case "1":
                        ss = "0001";
                        break;
                    case "2":
                        ss = "0010";
                        break;
                    case "3":
                        ss = "0011";
                        break;
                    case "4":
                        ss = "0100";
                        break;
                    case "5":
                        ss = "0101";
                        break;
                    case "6":
                        ss = "0110";
                        break;
                    case "7":
                        ss = "0111";
                        break;
                    case "8":
                        ss = "1000";
                        break;
                    case "9":
                        ss = "1001";
                        break;
                    case "A":
                        ss = "1010";
                        break;
                    case "B":
                        ss = "1011";
                        break;
                    case "C":
                        ss = "1100";
                        break;
                    case "D":
                        ss = "1101";
                        break;
                    case "E":
                        ss = "1110";
                        break;
                    case "F":
                        ss = "1111";
                        break;
                    default:

                        break;

                }
                sss += ss;
            }
            return sss;
        }
        /// <summary>
        /// 汉字转国标码
        /// </summary>
        /// <param name="hz"></param>
        /// <returns></returns>
        public string Hz2ASC(string hz)
        {
            string st = string.Empty;
            byte[] array = System.Text.Encoding.Default.GetBytes(hz);
            for (int i = 0; i < array.Length; i++)
            {
                st += array[i].ToString("X2");
            }
            return st;
        }
        /// <summary>
        /// 国标码转汉字
        /// </summary>
        /// <param name="asc"></param>
        /// <returns></returns>
        public string ASC2Hz(string asc)
        {
            string st = string.Empty;
            byte[] array = new byte[asc.Length / 2];
            for (int i = 0; i < array.Length; i++)
                array[i] = Convert.ToByte(asc.Substring(i * 2, 2).Trim(), 16);
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] >= 161 && array[i] <= 247)
                {
                    st = st + System.Text.Encoding.Default.GetString(array, i, 2);
                    i++;
                }
                else
                {
                    st = st + System.Text.Encoding.Default.GetString(array, i, 1);
                }
            }
            return st;
        }
        /// <summary>
        /// 从字符串头位置取指定长度的字符串,
        /// 并从源字符串删除取出的字符串
        /// </summary>
        /// <param name="str">源字符串</param>
        /// <param name="getLen">要取的长度</param>
        /// <returns>返回取出的字符串</returns>
        public string getString(ref string str, int getLen)
        {
            string backStr = "";
            try
            {
                if ((!str.Equals("")) && (str.Length >= getLen))
                {
                    backStr = str.Substring(0, getLen);
                    str = str.Substring(getLen);
                }
            }
            catch { }
            return backStr;
        }
        /// <summary>
        /// 从字符串右边位置取指定长度的字符串,
        /// 并从源字符串删除取出的字符串
        /// </summary>
        /// <param name="str"></param>
        /// <param name="getLen"></param>
        /// <returns></returns>
        public string getStringR(ref string str, int getLen)
        {
            string backStr = "";
            try
            {
                if ((!str.Equals("")) && (str.Length >= getLen))
                {
                    backStr = str.Substring(str.Length - getLen);
                    str = str.Substring(0, str.Length - getLen);
                }
            }
            catch { }
            return backStr;
        }

        /// <summary>
        /// 十六进制转换成十进制
        /// </summary>
        /// <param name="hexStr">十六进制字符串</param>
        /// <returns>十进制数</returns>
        public int Hex2Int(string hexStr)
        {
            int intValue;
            try
            {
                intValue = int.Parse(hexStr, System.Globalization.NumberStyles.HexNumber);
            }
            catch
            {
                intValue = 0;
            }
            return intValue;
        }
        /// <summary>
        /// 字符串(必须是BCD码串)转十六进制
        /// </summary>
        /// <param name="str">字串</param>
        /// <param name="len">转换后长度,为字符长度</param>
        /// <returns></returns>
        public string Str2Hex(string str, int len)
        {
            string hex = "";
            try
            {
                int strInt = Convert.ToInt32(str);
                hex = strInt.ToString("X" + len);
            }
            catch
            {
                for (int i = 0; i < len; i++) hex += "0";
            }
            return hex;
        }
        /// <summary>
        /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”)
        /// 注意是大写的
        /// </summary>
        /// <param name="StringASCII">要转换的ASCII字符</param>
        /// <returns></returns>
        public string ASCII2string(string StringASCII)
        {
            string Data = StringASCII;
            int i;
            int intData;
            string hexData;
            string changeData = "";

            for (i = 0; i < Data.Length; i++)
            {
                string stringData = Data.Substring(i, 1).ToUpper();
                char charData = Convert.ToChar(stringData);
                intData = Convert.ToInt32(charData);
                hexData = intData.ToString("X");
                changeData += hexData;
            }
            return changeData;
        }
        /// <summary>
        /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”)
        /// 注意是小写的
        /// </summary>
        /// <param name="StringASCII">要转换的ASCII字符</param>
        /// <returns></returns>
        public string ASCII2stringLower(string StringASCII)
        {
            string Data = StringASCII;
            int i;
            int intData;
            string hexData;
            string changeData = "";

            for (i = 0; i < Data.Length; i++)
            {
                string stringData = Data.Substring(i, 1).ToLower();
                char charData = Convert.ToChar(stringData);
                intData = Convert.ToInt32(charData);
                hexData = intData.ToString("X");
                changeData += hexData;
            }
            return changeData;
        }
        /// <summary>
        /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”)
        /// 注意是区分大小写的
        /// </summary>
        /// <param name="StringASCII">要转换的ASCII字符</param>
        /// <returns></returns>
        public string ASCII2stringCase(string StringASCII)
        {
            string Data = StringASCII;
            int i;
            int intData;
            string hexData;
            string changeData = "";

            for (i = 0; i < Data.Length; i++)
            {
                string stringData = Data.Substring(i, 1);
                char charData = Convert.ToChar(stringData);
                intData = Convert.ToInt32(charData);
                hexData = intData.ToString("X");
                changeData += hexData;
            }
            return changeData;
        }
        /// <summary>
        /// string类型的HEX转换为string类型的ASCII字符(如“41423432364550433131”-> “AB426EPC11”)
        /// </summary>
        /// <param name="stringhex">要转换的string类型的HEX</param>
        /// <returns>ASCII字符</returns>
        public string string2ASCII(string stringhex)
        {
            string changeData = "";
            try
            {
                string hexData = stringhex;
                int i;
                char stringData;
                int intData;


                for (i = 0; i < hexData.Length; i = i + 2)
                {
                    string tempData = hexData.Substring(i, 2);
                    intData = Convert.ToInt32(tempData, 16);
                    stringData = (char)intData;
                    changeData += stringData.ToString();
                }
                return changeData;
            }
            catch (Exception e)
            {
                return changeData = e.Message;
            }
        }
        /// <summary>
        /// BCD转成固定长度的String
        /// </summary>
        /// <param name="str"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public string BCD2String(string str, int len)
        {
            int ll = str.Length;
            for (int i = 0; i < len - ll; i++)
            {
                str = "0" + str;
            }
            return str.Substring(0, len);
        }
        /// <summary>
        /// yyyyMMddHHmmss字符串转换成日期时间格式
        /// </summary>
        /// <param name="strTime">日期时间字符串</param>
        /// <returns>yyyy-MM-dd HH:mm:ss格式字符串</returns>
        public string Str2Datetime(string strTime)
        {
            try
            {
                return strTime.Substring(0, 4) + "-" + strTime.Substring(4, 2) + "-"
                    + strTime.Substring(6, 2) + " " + strTime.Substring(8, 2) + ":"
                    + strTime.Substring(10, 2) + ":" + strTime.Substring(12, 2);
            }
            catch
            {
                return "";
            }
        }

        /// <summary>
        /// yyMMddHHmmss字符串转换成日期时间格式
        /// </summary>
        /// <param name="strTime">日期时间字符串</param>
        /// <returns>yyyy-MM-dd HH:mm:ss格式字符串</returns>
        public string Str2Datetime1(string strTime)
        {
            try
            {
                return "20" + strTime.Substring(0, 2) + "-" + strTime.Substring(2, 2) + "-"
                    + strTime.Substring(4, 2) + " " + strTime.Substring(6, 2) + ":"
                    + strTime.Substring(8, 2) + ":" + strTime.Substring(10, 2);
            }
            catch
            {
                return "";
            }
        }

        /// <summary>
        /// yyMMdd字符串转换成日期格式
        /// </summary>
        /// <param name="strDate">日期字符串</param>
        /// <returns>yyyy-MM-dd格式字符串</returns>
        public string Str2Date(string strDate)
        {
            try
            {
                return strDate.Substring(0, 4) + "-" + strDate.Substring(4, 2) + "-"
                    + strDate.Substring(6, 2);
            }
            catch
            {
                return "";
            }
        }

        /// <summary>
        /// HHmmss字符串转换成时间格式
        /// </summary>
        /// <param name="strTime">时间字符串</param>
        /// <returns>HH:mm:ss格式字符串</returns>
        public string Str2Time(string strTime)
        {
            try
            {
                return strTime.Substring(0, 2) + ":" + strTime.Substring(2, 2) + ":"
                    + strTime.Substring(4, 2);
            }
            catch
            {
                return "";
            }
        }
        /// <summary>
        /// 取得日期
        /// </summary>
        /// <returns></returns>
        public string getDateString()
        {
            return System.DateTime.Now.ToString("yyyyMMdd");
        }
        /// <summary>
        /// 取得当前时间
        /// </summary>
        /// <returns></returns>
        public string getNowTimeString()
        {
            return System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }
        /// <summary>
        /// 显示像十六进制数据
        /// </summary>
        /// <param name="datagram"></param>
        /// <returns></returns>
        public string ShowSpace(string datagram)
        {
            StringBuilder sb = new StringBuilder(datagram.Length);
            for (int j = 0; j < (datagram.Length / 2); j++)
            {
                sb.Append(String.Format("{0}", datagram.Substring(j * 2, 2)));
                sb.Append(" ");
            }
            return sb.ToString();
        }
        /// <summary>
        /// DDDFF.FFF,0DDFF.FFF转换成度
        /// </summary>
        /// <param name="coordinate"></param>
        /// <returns></returns>
        public decimal Coord2Degree(string coordinate)
        {
            //DDDFF.FFF,0DDFF.FFF
            decimal _decData = 0;
            decimal d_Degree = 0;
            decimal d_Minute = 0;

            try
            {
                string s_Degree = coordinate.Substring(0, 3);//取度
                string s_Minute = coordinate.Substring(3, 5);//取分

                d_Degree = Convert.ToDecimal(s_Degree);
                d_Minute = Math.Round(Convert.ToDecimal(s_Minute) / 60000, 6);
                _decData = d_Degree + d_Minute;
            }
            catch
            {
                _decData = -1;
            }
            return _decData;
        }

        /// <summary> 
        /// 读取.exe.config的值 
        /// </summary> 
        /// <param name="path">.exe.config文件的路径</param> 
        /// <param name="appKey">"key"的值</param> 
        /// <returns>返回"value"的值</returns> 
        public string GetConfigValue(string path, string appKey)
        {
            XmlDocument xDoc = new XmlDocument();
            XmlNode xNode;
            XmlElement xElem = null;
            try
            {
                xDoc.Load(path);

                xNode = xDoc.SelectSingleNode("//appSettings");

                xElem = (XmlElement)xNode.SelectSingleNode("//add[@key=\"" + appKey + "\"]");

            }
            catch (XmlException ex)
            {
                MeBox(ex.Message);
            }
            if (xElem != null)
                return xElem.GetAttribute("value");
            else
                return "";
        }

        /// <summary> 
        /// 设置.exe.config的值 
        /// </summary> 
        /// <param name="path">.exe.config文件的路径</param> 
        /// <param name="appKey">"key"的值</param> 
        /// <param name="appValue">"value"的值</param> 
        public void SetConfigValue(string path, string appKey, string appValue)
        {
            XmlDocument xDoc = new XmlDocument();
            try
            {
                xDoc.Load(path);

                XmlNode xNode;
                XmlElement xElem1;
                XmlElement xElem2;

                xNode = xDoc.SelectSingleNode("//appSettings");

                xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key=\"" + appKey + "\"]");
                if (xElem1 != null) xElem1.SetAttribute("value", appValue);
                else
                {
                    xElem2 = xDoc.CreateElement("add");
                    xElem2.SetAttribute("key", appKey);
                    xElem2.SetAttribute("value", appValue);
                    xNode.AppendChild(xElem2);
                }
                xDoc.Save(Application.StartupPath + "\\" + path);
            }
            catch (XmlException ex)
            {
                MeBox(ex.Message);
            }
        }
        /// <summary> 
        /// 弹出提示框 
        /// </summary> 
        /// <param name="txt">输入提示信息</param> 
        private void MeBox(string txt)
        {
            MessageBox.Show(
                txt,
                "提示信息",
                MessageBoxButtons.OK,
                MessageBoxIcon.Asterisk,
                MessageBoxDefaultButton.Button1,
                MessageBoxOptions.DefaultDesktopOnly);
        }
原文地址:https://www.cnblogs.com/Archosaur/p/Logs.html