西班牙
斯潘4
所以,我在看这个问题在StackExchange上。
用户有色盲,无法读取FME日志中的错误信息,因为它们是红色的。
我已经提交了一个增强请求,我们将努力添加到我们的特殊色盲主题。
但是,与此同时,我想知道我们是否可以做些其他的事情来帮助你。他们不想复制/粘贴日志来检查错误。所以我想可能是一个自动提取错误消息的关闭python脚本?甚至是一个脚本,刚刚弹出一个对话框,说“有一个错误”?
有什么想法吗?
我的Python技能相当有限。是的,我最近在推特上说我从来都不需要它们,因为FME。你要找的词是讽刺的(或者也许是低能的)!
注:我会把它当作一个挑战,并为真正好的解决方案奖励额外的声誉积分。
我也是Python新手,我的脚本基于@大卫的代码:https://knowledge.亚搏在线safe.com/questions/24394/how-to-write-a-python-script-to-log-fme-error-to-t.html网站
我让它用ctypes打开一个对话框。
成功-显示写入的全部功能。
失败-显示失败消息
启动脚本
来自fmeobjects import*global my_fme_messages my_fme_messages=[]def LogSkimmer(severity,text):如果severity in(fme_FATAL,fme_ERROR):my_fme_messages.append(text)FMELogFile().setCallBack(LogSkimmer)
关闭脚本
import fme import fmeobjects import ctypes import winsound global my_fme_fme_messages runtime=fme.elapsedRunTime/60 status=fme.status totalfeatureswrited=fme.totalfeatureswrited;转换失败的消息。仅在状态为假的情况下只过滤相关消息:对于MyFFMEME消息中的MSG:如果“日志文件”不在MSG中:WINSHIVE。PraseSoad(“StaseExchange”,WINSECHON.SNDYASYNC)播放Windows声音CyType。WINLL.USER32。MessageBoxA(0,FME翻译失败,+MSG,‘错误’,0’)翻译成功消息。如果状态为True,则显示自定义消息:ctypes.windll.user32.MessageBoxA(0,'FME转换成功。编写的全部特征:'+STR(ToalStutuxRead),“成功”,0)WiSoal.PraseSoad(“StaseExchange”,WINSOCH.SNDYASYNC)播放Windows声音
这里有一个使用fmeobjects日志文件回调和一些全局变量的建议。
在启动python脚本中:
从fmeobjects import*#用于存储重要日志消息的全局字典全局fmeúu日志消息fmeúu日志消息={fmeúu警告:[],fmeúu错误:[],fme戋u致命:[]}全局整数以跟踪当前日志行号全局fme戋u日志消息计数fme戋u日志消息计数=0 def catch戋u日志消息(严重性,消息:全局fme日志消息计数全局fme日志消息fme日志消息计数+=1,如果严重性在(fme警告、fme错误、fme致命)和消息:fme日志消息[严重性]。追加('%8d:%s'%(fme日志消息计数,消息))fme日志=FMELogFile()fme日志。设置回调(捕获日志消息)
在shutdown python脚本中:
从u future_uuimport print_function global fme_log_messages no_umessages=[''*15+'None']print('='*80)print('Line number log message')print('-'*80)print('warning')for warning in fme_log_messages[fme_WARN]or no_messages:print(warning)print('ERRORS')for error in fme_log_messages[fme_error]or no_messages:print(error)对于fme_日志中的致命消息[fme_FATAL]或无致命消息,打印(“致命错误”):打印(致命)打印('='*80)
翻译结束时,关闭脚本将输出一个包含所有警告、错误和致命错误的概要,并带有行号(引用已写入的日志),例如:
注意,概要是使用python的“print”函数输出的,因此文本不包含在日志文件中,它只发送到翻译日志控制台窗口。这是设计好的,但是如果需要的话,脚本当然可以扩展为同时写入日志文件。
如果没有警告等,则如下所示:
使用Python2.7和3.5进行测试。
?2019安全亚搏在线软件公司|合法的