- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
Class ::nsmcp::LogRecordParser
::nsmcp::LogRecordParsercreate ... \
[ -colorCodeMap colorCodeMap ]
Defined in /usr/local/ns/tcl/nsmcp/lib/log-record.tcl
Class Relations
::nx::Class create ::nsmcp::LogRecordParser \ -superclass ::nx::ObjectMethods (to be applied on instances)
accessRequestIdentifier (scripted, public)
<instance of nsmcp::LogRecordParser> accessRequestIdentifier \ message
OpenACS access format: peer request-id user [timestamp] ...
- Parameters:
- message (required)
- Testcases:
- No testcase defined.
if {[regexp {^\S+[ \t]+(\S+)[ \t]+\S+[ \t]+\[} $message -> identifier] && [:validRequestIdentifier $identifier]} { return $identifier } return {}metadata (scripted, public)
<instance of nsmcp::LogRecordParser> metadata message
Access logs contain no ANSI formatting. Strip only system-log rows.
- Parameters:
- message (required)
- Testcases:
- No testcase defined.
if {[string index $message 0] eq "\[" || [string index $message 0] eq "\x1b"} {set message [:stripAnsi $message]} set result [dict create timestamp {} processThread {} logThread {} severity {} requestIdentifier {} peerAddress {} method {} url {} protocol {} status {} responseBytes {}] if {[regexp {^\[([^\]\r\n]+)\]\[([^\]\r\n]+)\]\[([^\]\r\n]+)\][ \t]+([A-Za-z][A-Za-z0-9_()-]*):[ \t]*} $message -> timestamp processThread thread severity]} { dict set result timestamp $timestamp dict set result processThread $processThread dict set result logThread $thread dict set result severity $severity if {[:validRequestIdentifier $thread]} { dict set result requestIdentifier $thread } } elseif {[regexp {^(\S+)[ \t]+(\S+)[ \t]+\S+[ \t]+\[([0-9]{2}/[A-Za-z]{3}/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}[ \t]+[+-][0-9]{4})\][ \t]+"((?:[^"\\\r\n]|\\.)*)"[ \t]+([1-5][0-9]{2})[ \t]+(-|[0-9]+)(?:[ \t]|$)} $message -> peer identifier timestamp request status bytes]} { dict set result timestamp $timestamp dict set result peerAddress $peer if {[:validRequestIdentifier $identifier]} {dict set result requestIdentifier $identifier} dict set result status [scan $status %d] if {$bytes ne "-"} { set bytes [string trimleft $bytes 0] dict set result responseBytes [expr {$bytes eq "" ? 0 : $bytes}] } # Preserve the logged request target; do not decode percent escapes # or interpret the application's query parameters here. if {[regexp {^(\S+)[ \t]+(\S+)[ \t]+(HTTP/[0-9]+\.[0-9]+)$} $request -> method url protocol]} { dict set result method $method dict set result url $url dict set result protocol $protocol } } if {[dict get $result status] ne "" && [nsf::object::exists ::nsmcp::accessRecordParser]} { set access [::nsmcp::accessRecordParser parse $message] foreach key {requestIdentifier method url protocol pool startTime timingSource acceptTime queueTime filterTime runTime} { if {[dict exists $access $key]} {dict set result $key [dict get $access $key]} } } return $resultstripAnsi (scripted, public)
<instance of nsmcp::LogRecordParser> stripAnsi message
- Parameters:
- message (required)
- Testcases:
- No testcase defined.
if {[string first \x1b $message] < 0} {return $message} if {![info exists :colorCodeMap]} { set :colorCodeMap [list [binary decode hex 1b5b303b33326d] {} [binary decode hex 1b5b303b33396d] {} [binary decode hex 1b5b306d] {} [binary decode hex 1b5b313b33316d] {} [binary decode hex 1b5b313b33396d] {}] } set message [string map ${:colorCodeMap} $message] # Preserve support for uncommon/custom SGR sequences, off the fast path. if {[string first \x1b $message] >= 0} {regsub -all {\x1b\[[0-9;]*m} $message {} message} return $messagevalidConnectionIdentifier (scripted, public)
<instance of nsmcp::LogRecordParser> validConnectionIdentifier \ identifier
- Parameters:
- identifier (required)
- Testcases:
- No testcase defined.
return [regexp {^-conn:[^:\[\]\r\n]+:[^:\[\]\r\n]+:[0-9]+:[0-9]+-$} $identifier]validRequestIdentifier (scripted, public)
<instance of nsmcp::LogRecordParser> validRequestIdentifier \ identifier
System-log identifiers are thread names, including sched/nsjob/SMTP.
- Parameters:
- identifier (required)
- Testcases:
- No testcase defined.
return [regexp {^-[^\x00\[\]\s]+-$} $identifier]
- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
![[i]](/resources/acs-subsite/ZoomIn16.gif)