Skip to content

Main content

Log Record Level Count Table

Count explicit log severity observations after caller alias normalization, retaining source indexes and an explicit alias-cycle category; not a universal level classification.

Loading tool…

Description

Count explicit log severity observations after caller alias normalization, retaining source indexes and an explicit alias-cycle category; not a universal level classification.

Structured log records need an explicit ordering, time unit and label convention. A sequence gap can be measured in supplied record order without proving loss, and grouping adjacent messages differs from grouping all equal messages. The record tools here operate on caller-supplied structured data rather than collecting logs.

Count explicit log severity observations after caller alias normalization, retaining source indexes and an explicit alias-cycle category; not a universal level classification.

When to use this tool

Use this tool to count explicit log severity observations after caller alias normalization, retaining source indexes and an explicit alias-cycle category; not a universal level classification.

How to use the tool and how it works

  1. Enter recordsJson, aliasesJson using the field definitions below. For JSON text, serialize the explicit records in the shown shape.
  2. Run the operation. Correct input errors before interpreting an output.
  3. Read result.counts. Use the ordering, boundary rules and absence conditions described below.

Resolve each record’s level through the supplied alias map and group terminal labels in first-appearance order, returning counts and original indexes.1

Input fieldMeaning and unitsAccepted input
recordsJsonJSON array of {id, time, source, level, message, sequence} records. Time and gap units are caller-defined; sequence is a nonnegative integer.Text, at most 8,192 UTF-16 code units; the operation’s grammar also applies.
aliasesJsonJSON array of {name, target} string records. Alias names must be distinct; matching is exact and case-sensitive. Cycles are reported rather than resolved to an invented terminal label.Text, at most 8,192 UTF-16 code units; the operation’s grammar also applies.

These are the decoded structures used in the example’s JSON text fields. Supply the corresponding serialized JSON strings as input.

json
{
  "recordsJson": [
    {
      "id": "a",
      "time": 1,
      "source": "s",
      "level": "info",
      "message": "x",
      "sequence": 1
    },
    {
      "id": "b",
      "time": 3,
      "source": "s",
      "level": "info",
      "message": "x",
      "sequence": 3
    }
  ],
  "aliasesJson": [
    {
      "name": "info",
      "target": "notice"
    }
  ]
}
Output fieldInterpretation
resultObject containing the named fields below.
result.countsPer-window counts or first-seen resolved-level groups, as defined above.
json
{
  "input": {
    "recordsJson": "[{\"id\": \"a\", \"time\": 1, \"source\": \"s\", \"level\": \"info\", \"message\": \"x\", \"sequence\": 1}, {\"id\": \"b\", \"time\": 3, \"source\": \"s\", \"level\": \"info\", \"message\": \"x\", \"sequence\": 3}]",
    "aliasesJson": "[{\"name\":\"info\",\"target\":\"notice\"}]"
  },
  "output": {
    "result": {
      "counts": [
        {
          "level": "notice",
          "count": 2,
          "indexes": [
            0,
            1
          ]
        }
      ]
    }
  }
}

Limitations and assumptions

  • Alias cycles produce level null with aliasCycle true; unresolved terminal labels remain unchanged.
  • Structured log records have id, time, source, level, message and sequence fields. time is a finite caller-defined numeric scale; sequence is an integer from 0 through 1,000,000,000,000. Use the same time units for windows and gap edges.
  • Every declared top-level input field is required and unexpected fields are rejected. Ordinary strings are limited to 8,192 UTF-16 code units and lists to 128 entries, with tighter operation-specific bounds where stated. JSON text has bounded nesting and node counts.
  • Numeric outputs must be finite and no larger in absolute magnitude than the safe-integer limit; operations returning exact large integers use decimal text. Positions are zero-based and spans end exclusively unless the operation explicitly states a different convention.

Alternative or Complementary methods

Keep original record order and provenance alongside summaries. Sort, partition by source or normalize aliases explicitly before applying a rule that depends on those choices.

References

  1. Tool behavior and example: Log Record Level Count Table — tool.io

Similar or alternative tools

  • Log Level Order Selector

    Select supplied severity tokens at or above an explicit least-to-most ordered level bank; retain unknown tokens instead of assuming rank.

  • Log Level Token Normalizer

    Normalize a log-level token through explicit caller aliases with cycle/path evidence; no universal severity vocabulary.