public bool Write(LOG_MODE mode, string sMsg) { cekDir(); string sDate = DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year; string sTime = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second; byte[] bMsg = Encoding.UTF8.GetBytes("[" + sTime + "] " + sMsg + Environment.NewLine); switch (mode) { case LOG_MODE.ACTION: { fStream = new FileStream(PATH + "\\Logs\\" + sDate + ".txt", FileMode.Append); fStream.Write(bMsg, 0, bMsg.Length); break; } case LOG_MODE.ERROR: { fStream = new FileStream(PATH + "\\Logs\\Errors\\" + sDate + ".txt", FileMode.Append); fStream.Write(bMsg, 0, bMsg.Length); break; } case LOG_MODE.WARNING: { fStream = new FileStream(PATH + "\\Logs\\Warnings\\" + sDate + ".txt", FileMode.Append); fStream.Write(bMsg, 0, bMsg.Length); break; } } fStream.Close(); fStream.Dispose(); fStream = null; return(true); }
/// <summary> /// Установить режим работы объекта /// </summary> /// <param name="log_mode">Значение для режима работы с низким приоритетом. Устанавливается при отсутствии режима в командной строке</param> /// <param name="LOG_KEY">Аргумент из состава командной строки - ключ для поиска режима журналирования</param> /// <returns>Результат установки режима работы</returns> public static void SetMode(LOG_MODE log_mode, string LOG_KEY = @"log=") { int iSetMode = 0; LOG_MODE cmd_log_mode = LOG_MODE.UNKNOWN; if (LOG_KEY.Equals(string.Empty) == false) { var arg_log = from arg in Environment.GetCommandLineArgs() where !(arg.IndexOf(LOG_KEY) < 0) select arg; if (arg_log.Count() == 1) { if (Enum.IsDefined(typeof(Logging.LOG_MODE), arg_log.ElementAt(0).Substring(arg_log.ElementAt(0).IndexOf(LOG_KEY) + LOG_KEY.Length)) == true) { cmd_log_mode = (Logging.LOG_MODE)Enum.Parse(typeof(Logging.LOG_MODE), arg_log.ElementAt(0).Substring(arg_log.ElementAt(0).IndexOf(LOG_KEY) + LOG_KEY.Length)); } else { iSetMode = -1; // режим не распознан } } else if (arg_log.Count() == 0) { iSetMode = 2; // режим не указан - значение по умолчанию } else { iSetMode = -2; // режим указан несколко раз - значение по умолчанию } } else { iSetMode = 1; // режим не указан - ключ для поиска аргумента не найден } //Если назначить неизвестный(UNKNOWN) тип логирования - 1-е сообщения б. утеряны Logging.s_mode = cmd_log_mode; // попытка разобрать командную строку - найти указание на режим журналирования if (iSetMode < 0) { // ошибка разбора DelegateProgramAbort?.Invoke(); } else if (iSetMode > 0) { // разбор выполнен - режим не установлен Logging.s_mode = log_mode; } else { // режим установлен из командной строки Logging.s_mode = cmd_log_mode; } }
public static void ReLogg(LOG_MODE mode) { if (!(s_mode == mode)) { m_this = null; s_mode = mode; } else { ; } }
/// <summary> /// log打印 /// mode 表示文本输出类别 /// 0 正常输出 /// 1 错误 /// 2 警告 /// </summary> /// <param name="str">要输出的文本内容</param> /// <param name="mode">输出文本类别</param> /// <returns></returns> private void writeLog(string str, LOG_MODE mode) { //当有3000行数据时,删除前100行 if (tb_log.LineCount > 3000) { _logWriteStream.Write(tb_log.Text); _logWriteStream.Flush(); tb_log.Clear(); } switch (mode) { case LOG_MODE.LOG_NORMAL: { tb_log.AppendText(string.Format(@"正常 {0:HH_mm_ss.fff}:", DateTime.Now) + str + "\r\n"); break; } case LOG_MODE.LOG_ERROR: { tb_log.AppendText(string.Format(@"错误 {0:HH_mm_ss.fff}:", DateTime.Now) + str + "\r\n"); break; } case LOG_MODE.LOG_WARNING: { tb_log.AppendText(string.Format(@"警告 {0:HH_mm_ss.fff}:", DateTime.Now) + str + "\r\n"); break; } case LOG_MODE.LOG_TEST: { tb_log.AppendText(string.Format(@"测试 {0:HH_mm_ss.fff}:", DateTime.Now) + str + "\r\n"); break; } default: { break; } } if (!tb_log.IsFocused) { tb_log.ScrollToEnd(); } //logs.Add(str); }