Skip to content

As a registry operator, I want per-product outcome logging (SUCCESS / FAILED / SKIPPED) so I can determine what happened to any specific product by LIDVID #126

Description

@jordanpadams

Summary

As a registry operator, I want the registry-loader to emit a clear per-product outcome log line (SUCCESS, FAILED, or SKIPPED) containing the product's LIDVID, so that I can quickly determine what happened to any specific product during a harvest or load run.

Motivation

The tool's core job is to load or update products in the registry. Currently, logging is operation-centric (bulk API calls, schema updates) rather than product-centric. An operator has no reliable way to grep logs and answer: "Was LIDVID urn:nasa:pds:foo::1.0 loaded successfully?"

Acceptance Criteria

  • Every product processed emits exactly one outcome log line containing its LIDVID and one of three states:
    • [SUCCESS] — product was written to the registry (new insert or update)
    • [FAILED] — product was attempted but could not be written (include reason)
    • [SKIPPED] — product was intentionally not loaded (include reason, e.g. version policy)
  • Log format is consistent and grep-friendly, e.g.:
    [SUCCESS] lid=urn:nasa:pds:... vid=1.0
    [FAILED]  lid=urn:nasa:pds:... vid=1.0  reason=<message>
    [SKIPPED] lid=urn:nasa:pds:... vid=1.0  reason=already loaded with newer version
    
  • The outcome line is emitted at a level visible to operators by default (e.g., the existing SUMMARY custom level or INFO)
  • Full exception stack traces for FAILED cases go to DEBUG level — operators should not have to wade through stack traces to see what failed
  • Both harvest and manager emit outcome lines using the same format

Notes

  • The harvest module already defines a custom SUMMARY log level (LogUtils.LEVEL_SUMMARY, priority 150). This should be evaluated as the appropriate level for outcome lines, or promoted/renamed as part of this work.
  • This task is the highest-priority item in the logging standardization theme.

For Internal Dev Team To Complete

⚙️ Engineering Details

🎉 Integration & Test

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

Projects

Status
ToDo
Status
Review/QA

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions