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
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.0loaded successfully?"Acceptance Criteria
[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)SUMMARYcustom level or INFO)FAILEDcases go to DEBUG level — operators should not have to wade through stack traces to see what failedNotes
SUMMARYlog 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.For Internal Dev Team To Complete
⚙️ Engineering Details
🎉 Integration & Test