-
Notifications
You must be signed in to change notification settings - Fork 0
Pare down logs output from publication and tests #64
Comments
So @jgraettinger, @psFried and I talked about this today, and here is what we ended up coming up with. As a preface, we can absolutely not do this and just squelch most of the NPM output and move on -- this solution is more like an answer to "how should this flow look/work?", and what would be worth doing in order to allow that to happen. NOTE: This is written in an authoritative voice, like a decision to be logged. My intent is to put it out there before starting work, in order to get feedback, so don't feel like this is set in stone etc. Leading the UX of discover, publish, materialize etc with a box of streaming logs sends the message that we're not confident in things working, so we're going to preemptively give you the raw system logs "in case something goes wrong". Not that we shouldn't have logs as an option for developers/power users, but we should have a better UX by default. One benefit of having streaming logs is that it gives the user a feeling of movement. Given that these operations frequently take tens of seconds to minutes to run, it's important that we convey to users that something is happening. Rather than logs, we want to present a checklist of sub-tasks that need to complete before this operation is finished, as well as presenting any errors/failures alongside the sub-task that it occurred during. Roughly, these operations are:
This is all well and good, but how do we communicate this structured information? We already have a streaming communication mechanism in the form of logs, so we should use that. Ideally we'd convert logs to structured JSON and just use that structure to communicate these semantic state updates, but for various reasons that's not immediately tenable (something something Rust calling Go calling Rust, maybe @jgraettinger can give a better explanation). The solution we came to is to have the One issue to consider is how we make sure that only the logs for a specific task get send to that task's The other issue to consider is how the frontend will consume this semi-structured logging. One possibility was to capture all logs as JSON (with the unstructured ones being shoved into something like |
This is a pragmatic first step towards estuary/animated-carnival#64. Ultimately we'll have structured logging and can filter logs after-the-fact, but in the mean time this does a lot to clean up the log output.
This is a short-term solution for #64, where the longer term solution would be emitting structured logs and filtering elsewhere
* refactor: Only output NPM logs if there was an error This is a pragmatic first step towards estuary/animated-carnival#64. Ultimately we'll have structured logging and can filter logs after-the-fact, but in the mean time this does a lot to clean up the log output. * refactor: Quiet docker pull output * refactor: review comments
Can we close this as "we've done what we're going to do right now"? |
No description provided.
The text was updated successfully, but these errors were encountered: