黄学彪
2020-12-16 0d9f64668fd7350d6a21fd157e32009a96d98134
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone
{
    /// <summary>
    /// Log逻辑
    /// </summary>
    public class HdlLogLogic
    {
        #region ■ 变量声明___________________________
 
        /// <summary>
        /// Log逻辑
        /// </summary>
        private static HdlLogLogic m_Current = null;
        /// <summary>
        /// Log逻辑
        /// </summary>
        public static HdlLogLogic Current
        {
            get
            {
                if (m_Current == null)
                {
                    m_Current = new HdlLogLogic();
                }
                return m_Current;
            }
        }
 
        /// <summary>
        /// 锁
        /// </summary>
        private object objLock = new object();
 
        #endregion
 
        #region ■ Log出力____________________________
 
        /// <summary>
        /// 调试用,追加写入其他Log
        /// </summary>
        /// <param name="fullName">全路径</param>
        /// <param name="i_text">要写入的内容</param>
        /// <param name="deleteFile">是否先删除文件</param>
        /// <param name="encrypt">写入的内容是否加密</param>
        public void WriteOtherText(string fullName, string i_text, bool deleteFile, bool encrypt)
        {
            if (deleteFile == true)
            {
                HdlFileLogic.Current.DeleteFile(fullName);
            }
            System.IO.StreamWriter sw = null;
            try
            {
                string strLog = "[" + DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + "] " + i_text;
                if (encrypt == true)
                {
                    strLog = HdlCommonLogic.Current.EncryptPassword(HdlUserCenterResourse.FileEncryptKey, strLog);
                }
                strLog = "\r\n" + strLog + "\r\n";
                sw = new System.IO.StreamWriter(fullName, true, Encoding.UTF8);
                sw.WriteLine(strLog);
            }
            catch { }
            finally
            {
                sw?.Close();
                sw = null;
            }
        }
 
        /// <summary>
        /// Log出力
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="appendMsg">附加消息</param>
        public void WriteLog(Exception ex, string appendMsg = "")
        {
            //Log出力
            string msg = appendMsg == "" ? string.Empty : appendMsg + "\r\n";
            msg += ex.Message + "\r\n";
            msg += ex.StackTrace;
            this.WriteLog(-1, msg);
        }
 
        /// <summary>
        /// Log出力
        /// </summary>
        /// <param name="div">1:普通Log,-1:致命错误Log,2,3:特殊Log</param>
        /// <param name="strLog">Log内容</param>
        public void WriteLog(int div, string strLog)
        {
            lock (objLock)
            {
                if (div == 1 && HdlUserCenterResourse.HideOption.DetailedLog == 0)
                {
                    //暂时只记录异常信息
                    return;
                }
                //Log文件
                System.IO.StreamWriter sw = null;
                try
                {
                    string fullName = string.Empty;
                    if (div == 1 || div == -1)
                    {
                        //创建LOG文件夹
                        HdlFileLogic.Current.CreateDirectory(HdlFileNameResourse.LogDirectory);
 
                        string fileName = this.GetLogFile(div);
                        fullName = System.IO.Path.Combine(HdlFileNameResourse.LogDirectory, fileName);
                    }
                    else if (div == 2)
                    {
                        fullName = HdlFileNameResourse.SendAndReceveDataLog;
                    }
                    else if (div == 3)
                    {
                        fullName = HdlFileNameResourse.SocketReceiveDataLog;
                    }
                    strLog = "\r\n[" + DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + "] " + strLog + "\r\n";
                    sw = new System.IO.StreamWriter(fullName, true, Encoding.UTF8);
                    sw.WriteLine(strLog);
                }
                catch { }
                finally
                {
                    sw?.Close();
                    sw = null;
                }
            }
        }
 
        /// <summary>
        /// 获取LOG文件
        /// </summary>
        /// <param name="div">1:普通Log,-1:致命错误Log</param>
        /// <returns></returns>
        private string GetLogFile(int div)
        {
            //加密,因为这是收集数据,最好不让别人知道这是什么最好
            string fileName = DateTime.Now.ToString("yyyyMMdd") + "Log";
            if (HdlUserCenterResourse.UserInfo.Account != string.Empty)
            {
                fileName = HdlUserCenterResourse.UserInfo.Account + "-" + fileName;
            }
 
            fileName = HdlCommonLogic.Current.EncryptPassword(HdlUserCenterResourse.FileEncryptKey, fileName);
            return fileName;
        }
        #endregion
    }
}