当前位置: 首页 > news >正文

VisionPro二开之日志Log模块

VisionPro二开之日志Log模块

一 配置log4net.config文件

<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname="log4net"type="System.Configuration.IgnoreSectionHandler"/></configSections><log4net><!--配置日志的目标存储形式--><root><!--输出等级--><levelvalue="ALL"/><!--控制台形式--><appender-refref="ConsoleAppender"/><!--文件形式--><appender-refref="FileAppender"/></root><!--控制台形式--><appendername="ConsoleAppender"type="log4net.Appender.ConsoleAppender"><layouttype="log4net.Layout.PatternLayout"value="%date [%thread] %-5level %logger - %message%newline"/></appender><!--文件形式--><appendername="FileAppender"type="log4net.Appender.FileAppender"><!--文件路径--><filevalue="Log/log-file.txt"/><!--是否追加--><appendToFilevalue="true"/><!--显示格式--><layouttype="log4net.Layout.PatternLayout"><paramname="Header"value="&#xD;&#xA;-------------------------软件启动-----------------------&#xD;&#xA;"/><paramname="Footer"value="&#xD;&#xA;-------------------------软件关闭-----------------------&#xD;&#xA;"/><paramname="ConversionPattern"value="%d{yyyy-MM-dd HH:mm:ss} --%-5p-- %m%n"/></layout></appender></log4net></configuration>

二 绑定log4net.config文件

[assembly:log4net.Config.XmlConfigurator(ConfigFile="log4net.config",ConfigFileExtension="config",Watch=true)]

三 创建文件夹-LogModule

Log

usinglog4net;usinglog4net.Layout;usinglog4net.Repository.Hierarchy;usingMicrosoft.VisualBasic.Logging;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceAOI缺陷检测软件_VisionPro{publicclassLog{// 1.获取log4net里面的日志类实例publicstaticILoglog=LogManager.GetLogger("myLog");// 2.根据类实现5个等级日志的记录publicstaticvoidInfo(stringmsg){log.Info(msg);}publicstaticvoidDebug(stringmsg){log.Debug(msg);}publicstaticvoidWarn(stringmsg){log.Warn(msg);}publicstaticvoidError(stringmsg){log.Error(msg);}publicstaticvoidFatal(stringmsg){log.Fatal(msg);}// 3.把日志内容同步到显示控件上publicstaticvoidInitTextBox(TextBoxtextBox){if(textBox==null)return;varlogPattern="%d{yyyy-MM-dd HH:mm:ss:fff} --%-5p-- %m%n";TextBoxBaseAppenderappender=newTextBoxBaseAppender();appender.TextBox=textBox;// 核心appender.Layout=newPatternLayout(logPattern);Loggerlog4netLogger=log.LoggerasLogger;log4netLogger.AddAppender(appender);}}}

TextBoxBaseAppender

usinglog4net.Appender;usinglog4net.Core;usinglog4net.Layout;usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceAOI缺陷检测软件_VisionPro{/// <summary>////// </summary>/// <summary>/// 文本框添加信息类/// </summary>publicclassTextBoxBaseAppender:AppenderSkeleton{/// <summary>/// 文本输入框/// </summary>publicTextBoxTextBox{get;set;}/// <summary>/// 构造器/// </summary>staticTextBoxBaseAppender(){}/// <summary>/// 复现Append方法,记录日志,就会调用这个方法/// </summary>/// <param name="loggingEvent"></param>protectedoverridevoidAppend(LoggingEventloggingEvent){PatternLayoutpatternLayout=(PatternLayout)this.Layout;stringstr=string.Empty;if(patternLayout!=null){str=patternLayout.Format(loggingEvent);if(loggingEvent.ExceptionObject!=null)str+=loggingEvent.ExceptionObject.ToString()+Environment.NewLine;}elsestr=loggingEvent.LoggerName+"-"+loggingEvent.RenderedMessage+Environment.NewLine;// 打印printf(str);}privateboolm_Flag=false;//线程开启privateList<string>m_LogStrList=newList<string>();/// <summary>/// 锁/// </summary>privateObjectm_LockObj=newObject();/// <summary>/// 打印信息/// </summary>/// <param name="str"></param>privatevoidprintf(stringstr){lock(m_LockObj){Debug.WriteLine(str);m_LogStrList.Add(str);}if(m_Flag==false){m_Flag=true;Task.Run(()=>{while(true){Thread.Sleep(300);//日志刷新周期300ms 避免抢占主线程if(m_LogStrList.Count==0)continue;List<string>tempList=newList<string>();lock(m_LockObj){for(inti=0;i<m_LogStrList.Count;i++){tempList.Add(m_LogStrList[i]);}m_LogStrList.Clear();}if(tempList.Count>0){try{// 判别控件是否创建if(TextBox.IsHandleCreated){// 跨线程TextBox.Invoke(newAction(()=>{try{if(TextBox.Lines.Length>100){TextBox.Clear();}foreach(varstrTempintempList){ListViewItemitem=newListViewItem();item.Text=strTemp.ToString();TextBox.AppendText(strTemp);}}catch(Exceptione){throwe;}}));}}catch(TaskCanceledException){//TaskCanceledException 异常是关闭时候可能出现 直接忽略}catch(Exception){throw;}}}});}}}}
http://www.jsqmd.com/news/230724/

相关文章:

  • 智能体多语言支持测试:云端GPU秒切语言包,0等待
  • AI安全工程师速成:30小时实战课程+配套GPU资源打包
  • 云服务器CPU选AMD EPYC还是Intel Xeon更合适?
  • VisionPro二开之主界面设计
  • 原创诗集(陆续更新)
  • AI新闻热点提取教程:10分钟部署,媒体人必备
  • 内网渗透AI检测实战:云端GPU环境免配置,安全工程师必备
  • 学霸同款2026 AI论文工具TOP9:继续教育必备测评
  • AI侦测模型省钱攻略:按需付费比买显卡省90%成本
  • DeepSeek实体分析实测:云端10分钟出结果,新手指南
  • 统信系统安装deb软件实用方法
  • 零代码AI实体监控:预装镜像打开即用,学生党专属1元体验
  • Stable Diffusion安全检测新玩法:GPU云端2块钱生成并分析恶意图片
  • YOLOv8行为检测傻瓜教程:云端GPU免安装,新手上路零失败
  • API安全检测傻瓜教程:AI模型云端一键部署,小白也能做攻防
  • 智能合约安全检测:云端AI工具5分钟扫描,1块钱查100个合约
  • 【day 35】模型可视化与推理
  • AI智能体分析秘籍:5分钟部署侦测模型,显存不足不再愁
  • 跨境电商智能风控:实体识别+欺诈检测,3小时验证
  • AI侦测模型部署神器:1小时1块随用随停,不再浪费算力
  • 没预算怎么做AI安全?云端GPU按需付费成初创企业首选
  • 金融实体关系图谱构建:云端分布式计算,按需扩容
  • 各种主流视频格式的区别
  • 智能政务文档处理:敏感信息自动脱敏,合规优先
  • 农业病虫害AI检测:预置作物病害模型,田间快速部署
  • AI威胁狩猎省钱攻略:按秒计费GPU比本地训练省90%成本
  • AI侦测模型数据标注:云端协作工具+GPU加速全攻略
  • ARM 应用程序状态寄存器APSR的整数状态(NZCV)位
  • AI智能体农业监测:1小时1块,智能灌溉决策支持
  • 没Linux电脑怎么做AI安全?云端Web界面,Windows也能玩转