Newer
Older
GHFX_REFACTOR / Log.cs
wxn on 9 Nov 2016 3 KB 冗余代码整理
using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace Cyberpipe
{
    public class LogError
    {
        public static void PublishError(Exception e)
        {
            if (e.Data.Count > 0)
            {
                e.Data.Add("Kind", "ErrorLog");
            }
            PublishTxt("ErrorLog", e);
            PublishErrorToDataBase(e);
        }
        private static void PublishErrorToDataBase(Exception e)
        {
            string stackTrace = e.StackTrace.Replace("\r\n", "||");
            string message = e.Message.Replace("'", "\"");
            string source = e.Source.Replace(" ", "-");
            string sql = " insert into 日志管理 values('" + DateTime.Now + "','" +
                message + "','" + source + "','" + stackTrace + "','" + e.TargetSite + "')";
            try
            {
                int rowCount = OledbHelper.sqlExecuteNonQuery(sql);                
            }
            catch (Exception ex)
            {
                PublishTxt("ErrorLog", ex);
            }
        }
        private static void PublishTxt(string LogName,Exception e)
        {
            string m_LogName = Application.StartupPath + "/log.txt";
           
                //m_LogName = m_LogName.Split('.')[0] + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
                //    + DateTime.Now.Day.ToString() +"."+ m_LogName.Split('.')[1];

                StringBuilder sb = new StringBuilder();
                sb.Append("\r\n exception begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n");
                sb.Append("\r\n e.Message:" + e.Message + "\r\n");
                sb.Append("\r\n e.Source:" + e.Source + "\r\n");
                sb.Append("\r\n e.TargetSite:" + e.TargetSite + "\r\n");
                sb.Append("\r\n e.StackTrace:" + e.StackTrace + "\r\n");
                sb.Append("\r\n\r\n\r\n exception over ------------------------------------------------------------\r\n");
                if (e.Data.Count > 0)
                {
                    foreach (DictionaryEntry de in e.Data)
                    {
                        sb.Append("\r\n" + de.Key + de.Value + "\r\n");
                    }
                }
                PublishStream(m_LogName, sb);

        }

        public static void PublishAlarmMessage(string sensorType,string eqtId,string alarmValue,string collectTime)
        {
            string m_LogName = Application.StartupPath + "/alarmlog.txt";

            //m_LogName = m_LogName.Split('.')[0] + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
            //    + DateTime.Now.Day.ToString() +"."+ m_LogName.Split('.')[1];

            StringBuilder sb = new StringBuilder();
            sb.Append("\r\n alarm begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n");
            sb.Append("\r\n 传感器类型:" + sensorType + "\r\n");
            sb.Append("\r\n 设备id:" + eqtId + "\r\n");
            sb.Append("\r\n 传感器测量值:" + alarmValue + "\r\n");
            sb.Append("\r\n 测量值采集时间:" + collectTime + "\r\n");
            sb.Append("\r\n\r\n\r\n alarm over ------------------------------------------------------------\r\n");
            
            PublishStream(m_LogName, sb);

        }
        private static void PublishStream(string LogName, StringBuilder sb)
        {
            
            using (StreamWriter sw = new StreamWriter(LogName,true))
            {
                sw.Write(sb);
            }

            using (StreamReader sr = new StreamReader(LogName))
            {
                string strLog = sr.ReadToEnd();
                if (strLog.Length > 1024 * 1024)
                {
                    strLog = strLog.Substring(1024 * 512);
                }
            }
        }
    }
}