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.mzph.cn/news/1145535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能体多语言支持测试:云端GPU秒切语言包,0等待

智能体多语言支持测试&#xff1a;云端GPU秒切语言包&#xff0c;0等待 引言&#xff1a;出海App的测试痛点 想象一下你正在开发一款面向全球市场的智能客服App&#xff0c;需要支持12种语言的对话测试。传统方式每次切换语言都需要重装测试环境&#xff0c;就像每次换国家旅…

AI安全工程师速成:30小时实战课程+配套GPU资源打包

AI安全工程师速成&#xff1a;30小时实战课程配套GPU资源打包 1. 为什么需要弹性GPU资源学习AI安全&#xff1f; 很多转行学习AI安全的同学都会遇到一个共同痛点&#xff1a;课程提供的虚拟机性能太差&#xff0c;跑不动现代AI安全检测模型。就像给你一辆自行车去参加F1比赛&…

云服务器CPU选AMD EPYC还是Intel Xeon更合适?

没有标准答案。 只有适不适合。 在选购云服务器时&#xff0c;CPU是核心中的核心。 AMD EPYC 和 Intel Xeon&#xff0c;两大巨头&#xff0c;各有千秋。 选错&#xff0c;可能多花一半钱&#xff0c;性能还跟不上。 我们来拆解清楚。 一、AMD EPYC&#xff1a;多核性价比…

VisionPro二开之主界面设计

VisionPro二开之主界面设计

原创诗集(陆续更新)

狂客行登高望远云海苍茫&#xff0c; 弹琴奏曲千古绝唱。 饮酒吟诗扬鞭舞剑&#xff0c; 金戈铁马荡气回肠。临风把酒慨当以慷&#xff0c; 醉里挑灯剑影流光。 胸藏丘壑志在四方&#xff0c; 不负此生年少疏狂。醉后拔剑斩浮云&#xff0c; 醒来拂袖走天涯。 一身磊落任平生&a…

AI新闻热点提取教程:10分钟部署,媒体人必备

AI新闻热点提取教程&#xff1a;10分钟部署&#xff0c;媒体人必备 引言&#xff1a;为什么媒体人需要AI热点提取&#xff1f; 在信息爆炸的时代&#xff0c;每天都有海量的新闻和社交媒体内容产生。对于自媒体团队来说&#xff0c;手动筛选热点新闻不仅耗时耗力&#xff0c;…

内网渗透AI检测实战:云端GPU环境免配置,安全工程师必备

内网渗透AI检测实战&#xff1a;云端GPU环境免配置&#xff0c;安全工程师必备 引言&#xff1a;当红蓝对抗遇上AI检测 想象你是一名网络安全工程师&#xff0c;正在准备红蓝对抗演练。本地虚拟机跑不动复杂攻击模拟&#xff0c;真实环境测试又怕留下痕迹——这就像要在纸上画…

学霸同款2026 AI论文工具TOP9:继续教育必备测评

学霸同款2026 AI论文工具TOP9&#xff1a;继续教育必备测评 2026年学术写作工具测评&#xff1a;为继续教育者提供高效助力 在当前快节奏的学术环境中&#xff0c;无论是高校师生还是科研工作者&#xff0c;都面临着写作效率低、资料查找繁琐、内容质量难以把控等难题。随着AI技…

AI侦测模型省钱攻略:按需付费比买显卡省90%成本

AI侦测模型省钱攻略&#xff1a;按需付费比买显卡省90%成本 1. 创业团队的GPU成本困境 很多创业团队在开发AI侦测模型时&#xff0c;都会遇到一个典型问题&#xff1a;购买显卡太贵&#xff0c;租用服务器又浪费。比如一个做网络安全威胁检测的POC演示项目&#xff0c;咨询GP…

DeepSeek实体分析实测:云端10分钟出结果,新手指南

DeepSeek实体分析实测&#xff1a;云端10分钟出结果&#xff0c;新手指南 引言&#xff1a;当实验室服务器被占用时 作为研究院助理&#xff0c;最头疼的莫过于导师突然交代一个紧急任务&#xff1a;"小张&#xff0c;这周内把主流NLP模型的实体识别效果对比报告交上来&…

统信系统安装deb软件实用方法

文章目录背景知识学习安装命令单个安装批量安装安装位置背景 最近有台统信操作系统的电脑&#xff0c;需要安装补丁&#xff0c;如何安装呢&#xff0c;记录步骤&#xff0c;方便备查。 知识学习 统信操作系统是基于Ubuntu开发&#xff0c;有多种安装方式&#xff0c;在线安…

零代码AI实体监控:预装镜像打开即用,学生党专属1元体验

零代码AI实体监控&#xff1a;预装镜像打开即用&#xff0c;学生党专属1元体验 引言&#xff1a;论文党的福音 作为一名研究生&#xff0c;你是否正在为论文数据采集发愁&#xff1f;实验室GPU资源要排队两周&#xff0c;自己的MacBook又跑不动复杂模型&#xff0c;更头疼的是…

Stable Diffusion安全检测新玩法:GPU云端2块钱生成并分析恶意图片

Stable Diffusion安全检测新玩法&#xff1a;GPU云端2块钱生成并分析恶意图片 引言&#xff1a;当AI生成技术遇上安全检测 想象一下&#xff0c;你是一名网络安全研究员&#xff0c;最近发现黑客开始利用AI生成的图片传播恶意代码。传统的检测方法对这些新型威胁束手无策&…

YOLOv8行为检测傻瓜教程:云端GPU免安装,新手上路零失败

YOLOv8行为检测傻瓜教程&#xff1a;云端GPU免安装&#xff0c;新手上路零失败 引言&#xff1a;超市经理的AI监控新选择 作为超市管理者&#xff0c;你是否经常为这些场景头疼&#xff1a;货架商品被恶意藏匿、顾客在监控死角拆封包装、高峰期员工来不及补货&#xff1f;传统…

API安全检测傻瓜教程:AI模型云端一键部署,小白也能做攻防

API安全检测傻瓜教程&#xff1a;AI模型云端一键部署&#xff0c;小白也能做攻防 引言&#xff1a;为什么你需要关注API安全&#xff1f; 想象一下&#xff0c;你家的防盗门锁被破解了&#xff0c;小偷可以自由进出却不会触发警报——这就是API接口没有防护的真实写照。API作…

【day 35】模型可视化与推理

浙大疏锦行 # 提取权重数据 import numpy as np weight_data {} for name, param in model.named_parameters():if weight in name:weight_data[name] param.detach().cpu().numpy()# 可视化权重分布 fig, axes plt.subplots(1, len(weight_data), figsize(15, 5)) fig.sup…

智能合约安全检测:云端AI工具5分钟扫描,1块钱查100个合约

智能合约安全检测&#xff1a;云端AI工具5分钟扫描&#xff0c;1块钱查100个合约 1. 为什么需要智能合约安全检测&#xff1f; 智能合约就像区块链世界里的"自动售货机"——一旦部署就无法修改&#xff0c;但里面可能藏着各种漏洞。2023年DeFi领域因合约漏洞损失超…

AI智能体分析秘籍:5分钟部署侦测模型,显存不足不再愁

AI智能体分析秘籍&#xff1a;5分钟部署侦测模型&#xff0c;显存不足不再愁 1. 为什么你需要这个解决方案 如果你正在本地运行AI侦测模型&#xff0c;大概率遇到过这些问题&#xff1a; 跑着跑着突然报错"CUDA out of memory"&#xff0c;显存爆炸了调小batch_si…

跨境电商智能风控:实体识别+欺诈检测,3小时验证

跨境电商智能风控&#xff1a;实体识别欺诈检测&#xff0c;3小时验证 引言&#xff1a;为什么跨境电商需要智能风控&#xff1f; 跨境电商每天要处理成千上万的订单&#xff0c;其中隐藏着各种风险&#xff1a;虚假账号、盗刷信用卡、恶意退单等。传统风控方式主要依赖人工规…

AI侦测模型部署神器:1小时1块随用随停,不再浪费算力

AI侦测模型部署神器&#xff1a;1小时1块随用随停&#xff0c;不再浪费算力 1. 为什么你需要这个解决方案 作为小公司的CTO&#xff0c;你可能经常面临这样的困境&#xff1a;想要定期测试最新的AI侦测模型&#xff0c;但又不想承担高昂的专职运维成本和闲置的包月服务器费用…