예제 #1
0
        /// <summary>
        ///     记录日志
        /// </summary>
        /// <param name="info"> 日志消息 </param>
        public void RecordLog(RecordInfo info)
        {
            List <string> names = new List <string>();
            string        log;

            switch (info.Type)
            {
            case LogType.NetWork:
            case LogType.Plan:
            case LogType.Request:
            case LogType.System:
            case LogType.Login:
                names.Add("system");
                log = $@"[{info.Time:u}] {info.Index:X8}-{info.Machine}-{info.RequestID}-{info.User} > {info.Message}";
                break;

            case LogType.Warning:
                names.Add("warning");
                names.Add("system");
                log = $@"[{info.Time:u}] {info.Index:X8}-{info.Machine}-{info.RequestID}-{info.User} > {info.Message}";
                break;

            case LogType.Error:
            case LogType.Exception:
                names.Add("error");
                names.Add("system");
                log = $@"[{info.Time:u}] {info.Index:X8}-{info.Machine}-{info.ThreadID}-{info.RequestID}-{info.User} > 
{info.Message}
";
                break;

            case LogType.DataBase:
                names.Add("sql");
                names.Add("trace");
                log = $@"/*[{info.Time:u}] {info.Index:X8}-{info.Machine}-{info.RequestID}-{info.User}*/
{info.Message}
";
                break;

            case LogType.Monitor:
                names.Add("monitor");
                names.Add("trace");
                log = info.Message;
                break;

            case LogType.Debug:
                names.Add("debug");
                names.Add("trace");
                log = info.Message;
                break;

            default:
                names.Add("trace");
                log = $@"[{info.Time:u}] {info.Index:X8}-{info.Machine}-{info.RequestID}-{info.User} > {info.Message}";
                break;
            }

            foreach (var name in names)
            {
                try
                {
                    var writer = GetWriter(name);
                    if (writer == null)
                    {
                        return;
                    }
                    writer.Size += log.Length;
                    writer.Stream.WriteLine(log);
                }
                catch (Exception ex)
                {
                    LogRecorder.SystemTrace(LogLevel.Error, "TextRecorder.RecordLog4", name, ex);
                }
            }
        }