::nsmcp::Object ::nsmcp::Object dict getdef ::nx::Object ::nx::Object ::nsmcp::Object->::nx::Object ::nsmcp::LogDiscovery ::nsmcp::LogDiscovery createCorrelation describePath discover runtimeAccessLog runtimeSystemLog ::nsmcp::LogDiscovery->::nsmcp::Object

Class ::nsmcp::LogDiscovery

::nsmcp::LogDiscovery[i] create ... \
           [ -accessLog (default "") ] \
           [ -cacheDirectory (default "") ] \
           [ -systemLog (default "") ]

Defined in /usr/local/ns/tcl/nsmcp/log-discovery.tcl

Class Relations

  • class: ::nx::Class[i]
  • superclass: ::nsmcp::Object[i]
::nx::Class create ::nsmcp::LogDiscovery \
     -superclass ::nsmcp::Object

Methods (to be applied on instances)

  • createCorrelation (scripted, public)

     <instance of nsmcp::LogDiscovery[i]> createCorrelation name

    Create a named correlation service for the discovered sources. Validate the object name and source availability, then create the searches owned by the correlation object; clean up on failure.

    Parameters:
    name (required)
    Name of the configured or registered item to resolve.
    Returns:
    The newly created correlation object command.

    Testcases:
    No testcase defined.
    if {![string match ::* $name]} {
        error "expected a fully qualified object name"
    }
    if {[nsf::object::exists $name]} {
        error "object already exists: $name"
    }
    set discovered [:discover]
    if {![dict get $discovered system readable]} {
        error "discovered system log is missing or unreadable"
    }
    set access [dict get $discovered access path]
    if {$access ne "" && ![dict get $discovered access readable]} {
        error "discovered access log is missing or unreadable"
    }
    set sources {}
    if {$access ne ""} {
        lappend sources ${name}::access
    }
    ::nsmcp::LogCorrelation create $name -systemSearch ${name}::system -accessSearches $sources
    try {
        set common [list -store nsmcp:discovered-logs:[ns_info server]  -cacheDirectory [dict get $discovered cacheDirectory]]
        ::nsmcp::CachedLogSearch create ${name}::system  -path [dict get $discovered system path] {*}$common
        if {$access ne ""} {
            ::nsmcp::CachedLogSearch create ${name}::access -path $access {*}$common
        }
    } on error {message options} {
        $name destroy
        return -options $options $message
    }
    return $name
  • discover (scripted, public)

     <instance of nsmcp::LogDiscovery[i]> discover

    Resolve the effective system-log and access-log sources. Combine configured overrides with runtime discovery and retain availability and origin metadata.

    Returns:
    The discovered log-source dictionary.

    Testcases:
    No testcase defined.
    set system ${:systemLog}
    set systemOrigin override
    if {$system eq ""} {
        set system [:runtimeSystemLog]
        set systemOrigin runtime
    }
    set access ${:accessLog}
    set accessOrigin override
    if {$access eq ""} {
        set access [:runtimeAccessLog]
        set accessOrigin runtime
    }
    set cache ${:cacheDirectory}
    if {$cache eq ""} {
        set serverKey [string range [ns_crypto::md string -digest sha256 -- [ns_info server]] 0 11]
        set cache [file join /tmp nsmcp-cache-[pid]-$serverKey]
    }
    if {[file pathtype $cache] ne "absolute"} {
        error "cacheDirectory must be absolute"
    }
    return [dict create server [ns_info server]  system [:describePath $system $systemOrigin]  access [:describePath $access $accessOrigin]  cacheDirectory [file normalize $cache]]