Page History
...
Request Logs - Once upon a time the Request logs were nothing but raw text dumps of the Request argument that the OECGI passed into HTTP_MCP. We are now proud to showcase our new and improved Request log format:
Code Block theme Confluence language text title Request Log collapse true Request Argument -------------------------------------------------------------------------------- <01> HTTPQueryString : <02> HTTPPathInfo : contacts <03> HTTPContentType : <04> HTTPContentLength : 0 <05> HTTPGatewayInterface : CGI/1.1 <06> HTTPHTTPS : off <07> HTTPAccept : */* <08> HTTPCookie : <09> HTTPFrom : <10> HTTPReferer : <11> HTTPUserAgent : PostmanRuntime/6.1.6 <12> HTTPTranslated : C:\MyWebsite\www\contacts <13> HTTPRemoteAddr : 127.0.0.1 <14> HTTPRemoteHost : <15> HTTPRemoteIdent : <16> HTTPRemoteUser : <17> HTTPRequestMethod : GET <18> HTTPScriptName : /cgi-bin/oecgi4.exe <19> HTTPServerName : www.contacts.com <20> HTTPServerPort : 80 <21> HTTPServerProtocol : HTTP/1.1 <22> HTTPServerSoftware : Abyss/2.9.3.6-X1-Win32 AbyssLib/2.9.3.6 <23> HTTPServerURL : <24> HTTPNoURLDecode : <25> HTTPResponseIsBinary : <26> HTTPRegistrySettings + RegistryInfo : SOFTWARE\RevSoft\OECGI4 EngineName : ServerURL : localhost ServerPort : 8088 ApplicationName : FRAMEWORKS UserName : FRAMEWORKS StartupFlags : 1 ShutdownFlags : 1 FilePath : FilePathMapped : FileMode : 1 SysDownPage : OILocation : AdditionalValues : HTTP_MEDIA_TYPE,HTTP_ACCEPT_ENCODING,HTTP_ACCEPT_CHARSET,HTTP_ACCEPT_LANGUAGE,HTTP_AUTHORIZATION <27> HTTPOECGIVersion : VERSION:OECGI4 <28> HTTPGetString : <29> HTTPPostString : <30> HTTPAdditionalValues + Media-Type : Accept-Encoding : gzip, deflate Accept-Charset : Accept-Language : Authorization :
Response Logs - Turns out more metadata is a good thing so we went ahead and updated the Response log with the current HTTP Framework version, Authorization information, and Query Params used:
Code Block theme Confluence language text title Response Log collapse true HTTP Framework : v3.0.1 - 07/11/2017 12:58PM Time to Execute: 00h 00m 00s 063ms Request Method : GET Request URL : http://www.contacts.com/api/contacts Authorization : None Query Params : company=benton -------------------------------------------------------------------------------- Status: 200 OK Access-Control-Allow-Origin: * Content-Type: application/hal+json Content-Length: 507 { "_embedded" : { "item" : [ { "_links" : { "self" : { "href" : "http://www.contacts.com/api/contacts/1" } }, "company" : "Benton, John B Jr", "email" : "jbutt@gmail.com", "first_name" : "James", "last_name" : "Butt" } ] }, "_links" : { "self" : { "href" : "http://www.contacts.com/api/contacts" } } }
Aborted Logs - We added a new log type for aborted web services to make it easy to identify the offending code:
Code Block theme Confluence language text title Aborted Log collapse true ProcErr Argument -------------------------------------------------------------------------------- ENG0010: HTTP_CONTACTS_SERVICES, line 315. Variable has not been assigned a value.
Debugger Logs - For those who want to utilize a Debugger Intercept option for more indepth troubleshooting in their web applications, we also provide a JSON formatted log file for the basic intercept content:
Code Block theme Confluence language js title Debugger Log collapse true { "CallDepth" : 5, "CallStack" : [ { "LineNo" : 315, "ProcName" : "HTTP_CONTACTS_SERVICES" }, { "LineNo" : 155, "ProcName" : "HTTP_SERVICES" }, { "LineNo" : 81, "ProcName" : "HTTP_ENTRY_POINT_SERVICES" }, { "LineNo" : 155, "ProcName" : "HTTP_SERVICES" }, { "LineNo" : 135, "ProcName" : "HTTP_MCP" } ], "Curr_Program" : "HTTP_CONTACTS_SERVICES", "LineNo" : 315, "SPStatCode" : "ENG0010: HTTP_CONTACTS_SERVICES, line 315. Variable has not been assigned a value.", "SPStatus" : 1 }
Log File Names
What's in a name? Actually, quite a bit. We've even updated the names assigned to our log files for more diagnostic muscle:
The format of each file name is YYYY-MM-DD_HH-MM-SS_PID_LogType.log. The PID (Process ID) can be quite useful when multiple requests are processed simultaneously. Each OpenEngine process will have its own unique PID. Since each HTTP Request and associated Response will be handled by the same OpenEngine, it's quite easy now to pair up the relevant log files. The PID also makes it easy to see when one OpenEngine process may have been terminated due to a runtime error. For instance, in the above screen shot the Debugger log file introduces a OpenEngine (PID 43028) because the original OpenEngine (44448) used by the previous HTTP Request terminated.
3.0.0
Version 3.0.0 introduces new features to make it easier to configure setup values and to accept special URLs without requiring authentication.
...