实现日志(.log文件)记录编写
前言
在鼎捷日常运维中,碰到一些需要问题,有时候需要搭配日志作为问题判断的重要方法。本次记录在t100中编写子程序,将程序中运行的某些数据记录到日志文件中。
PUBLIC FUNCTION cs_xxxx_write_log(p_service_name,p_request_xml,p_response_xml)
DEFINE p_request_xml STRING #请求值
DEFINE p_response_xml STRING #返回值
DEFINE p_service_name STRING #服务名称
DEFINE l_channel base.Channel
DEFINE l_file STRING #文件名
DEFINE l_dom_doc om.DomDocument #
DEFINE l_dom_node om.DomNode #
DEFINE l_str STRING #字符变量,用于日志
DEFINE l_cmd STRING #
#设置文件名称 并且以当天日期命名
LET l_file = "cs_xxxx-", TODAY USING 'YYYYMMDD', ".log"
#将文件存入暂存区
LET l_file = os.Path.join(FGL_GETENV("TEMPDIR"), l_file)
#创建文件连接器
LET l_channel = base.Channel.create()
#打开日志文件,以修改的状态
CALL l_channel.openFile(l_file, "a")
#打开日志文件成功
IF STATUS = 0 THEN
#设置分隔符
CALL l_channel.setDelimiter("")
LET l_str = "#--------------------------- (", cl_get_current(), ") ------------------------#"
CALL l_channel.write(l_str)
CALL l_channel.write("")
#将服务信息写入日志文件
LET l_str = "Service Name : " , p_service_name
CALL l_channel.write(l_str)
LET l_str = "Time Start : ", g_log_data.start_time
CALL l_channel.write(l_str)
LET l_str = " Ending : ", g_log_data.end_time
CALL l_channel.write(l_str)
LET l_str = " Consuming : ", g_log_data.interval
CALL l_channel.write(l_str)
LET l_str = " Transmission: ", g_log_data.api_interval
CALL l_channel.write(l_str)
#将请求值信息写入日志
CALL l_channel.write("")
LET l_str = "Request JSON :"
CALL l_channel.write(l_str)
CALL l_channel.write(p_request_xml)
#将返回值信息写入日志
CALL l_channel.write("")
LET l_str = "Response JSON :"
CALL l_channel.write(l_str)
CALL l_channel.write(p_response_xml)
CALL l_channel.write("#------------------------------------------------------------------------------#")
#关闭日志文件编写
CALL l_channel.close()
#设置日志文件的权限-使得所有人可读可编写
LET l_cmd = "chmod 666 ", l_file CLIPPED, " >/dev/null 2>/dev/null"
#运行设置
RUN l_cmd
ELSE
#打开日志文件失败
DISPLAY "Can't open log file."
END IF
END FUNCTION