基实很简单:
最关键的一代代码:
m_RichEdit.Invoke(new MethodInvoker(
delegate
{
m_RichEdit.Text = lf.lg.Logcat.FindTag(cb_内容过虑.Text, cb_标题过虑.Text);
}
));
下面两句:
效果:
/// <summary>
/// 日志类
/// </summary>
/// 创建时间: 2021-10-18 最后一次修改时间:2021-10-18
public class Logcat_
{
private static StringList_ _LogcatList = null;
private static string _LogcatFullPathName = "";
public delegate void AddItemEvent(string name);
public static AddItemEvent AddItem;
public Logcat_()
{
if(_LogcatList == null)
{
_LogcatList = new StringList_();
if (!Directory.Exists("C:\\Log"))
{
Directory.MkDir("C:\\","Log");
}
_LogcatFullPathName = "C:\\Log\\" + Process.GetCurrentProcess().ProcessName +
DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log";
}
}
/// <summary>
/// 返回日志字符文本
/// </summary>
/// <returns></returns>
/// 创建时间: 2021-10-20 最后一次修改时间:2021-11-21
public static string GetAllString()
{
string sResult = "";
if (_LogcatList == null)
return "";
foreach (string s in _LogcatList)
{
sResult += s;
sResult += "\n";
}
return sResult;
}
/// <summary>
///
/// </summary>
/// <param name="s"></param>
/// 创建时间: 2021-11-21 最后一次修改时间:2021-11-21
public static void AddString(string s)
{
if(_LogcatList != null)
{
_LogcatList.Add(s);
if(AddItem != null)
{
AddItem(s);
}
}
}
public static void ClearString()
{
if(_LogcatList!= null)
{
_LogcatList.Clear();
}
}
/// <summary>
/// 功能:模拟安桌开发的Log,
/// </summary>
/// <param name="sMessage">需要写入的信息</param>
/// <param name="sTag">过滤器标标签</param>
/// 创建时间: 2021-10-19 最后一次修改时间:2021-10-19
public void D(string sMessage, object sTag)
{
if (_LogcatList.Count > 100000) //10万
{
throw new Exception("错误:日志文件太大了!");
}
string sInfo = "";
if (sTag != null)
{
sInfo = (_LogcatList.Count + 1).ToString() + " " + DateTime.Now.ToString()
+ "\t\tsTag = (" + sTag.ToString() + ")\t\tsMessage = (" + sMessage + ")";
}
else
{
sInfo = (_LogcatList.Count + 1).ToString() + " " + DateTime.Now.ToString()
+ "\t\tsTag = (" + ")\t\tsMessage = (" + sMessage + ")";
}
AddString(sInfo);
}
public string FindTag(string sFindMessage ="", string sFindTag="")
{
string sResult = "";
DListNote_<string> pNote = _LogcatList.Last;
while (pNote != null)
{
StringList_ sTemp = pNote.Data._Split("\t\t", true);
if(sFindMessage.Trim().Length > 0)
{
if(sTemp.Count == 3)
{
if(sTemp[2].ToLower().IndexOf(sFindMessage.ToLower().Trim()) != -1)
{
if(sFindTag.Trim().Length > 0)
{
if (sTemp[1].ToLower().IndexOf(sFindTag.ToLower().Trim()) != -1)
{
sResult += pNote.Data;
sResult += "\n";
}
}
else
{
sResult += pNote.Data;
sResult += "\n";
}
}
}
else
{
}
}
else
{
if (sFindTag.Trim().Length > 0)
{
if (sTemp[1].ToLower().IndexOf(sFindTag.ToLower().Trim()) != -1)
{
sResult += pNote.Data;
sResult += "\n";
}
}
else
{
sResult += pNote.Data;
sResult += "\n";
}
}
pNote = pNote.Prev;
}
return sResult;
}
/// <summary>
/// 退出项目时调用这个函数
/// </summary>
~Logcat_()
{
/*
TextWriter txtFile = TextWriter.Synchronized(File.AppendText(_LogcatFullPathName));
foreach (string s in _LogcatList)
{
txtFile.Write(s + "\n");
}
txtFile.Flush();
txtFile.Close();
*/
/*
string sText = "";
foreach (string s in _LogcatList)
{
sText += s;
sText += "\n";
}
if(sText.Trim().Length > 0)
File.WriteAllText(_LogcatFullPathName,sText);
*/
}
};
LogcatForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace lf
{
public partial class LogcatForm : lf.Form_
{
public LogcatForm()
{
InitializeComponent();
}
private void LogcatForm_Load(object sender, EventArgs e)
{
lf.Logcat_.AddItem += AddItem;
m_RichEdit.Text = "";
}
private void AddItem(string s )
{
//this.Invoke(new MethodInvoker(delegate
m_RichEdit.Invoke(new MethodInvoker(
delegate
{
m_RichEdit.Text = lf.lg.Logcat.FindTag(cb_内容过虑.Text, cb_标题过虑.Text);
}
));
}
private void tsmi_清除内容_Click(object sender, EventArgs e)
{
Logcat_.ClearString();
m_RichEdit.Clear();
}
private void cb_过虑字符串_SelectedIndexChanged(object sender, EventArgs e)
{
D("cb_过虑字符串_SelectedIndexChanged");
}
private void cb_内容过虑_TextChanged(object sender, EventArgs e)
{
m_RichEdit.Text = lf.lg.Logcat.FindTag(cb_内容过虑.Text, cb_标题过虑.Text);
}
private void cb_标题过虑_TextChanged(object sender, EventArgs e)
{
m_RichEdit.Text = lf.lg.Logcat.FindTag(cb_内容过虑.Text, cb_标题过虑.Text);
}
private void LogcatForm_BackColorChanged(object sender, EventArgs e)
{
cb_内容过虑.BackColor = BackColor;
cb_标题过虑.BackColor = BackColor;
cb_日志文件.BackColor = BackColor;
cb_调试类型.BackColor = BackColor;
}
}
}
MainForm中的代码:
MainForm界面 :