Conversation
|
Maybe it would be good for readability if we always put the identifier at the beginning of the message? |
| std::atomic_store(&control_client_channel_, ControlClientChannel::getControlClientChannel(sync_)); | ||
| } | ||
|
|
||
| std::string ProcessInfoNode::logId() const |
There was a problem hiding this comment.
I like the idea of having this reusable method.
Currently, though this causes heap allocation on every call which we need to avoid after initialization.
So I think we need to come up with a way that does not require heap after construction
|
Documentation preview for this pull request is available at: |
…-score#570) Add a private logId() helper that renders a consistent identity string, "Name: <name>, PID: <pid>", and use it at all 19 call sites in ProcessInfoNode that previously formatted process identity differently ("process X", "process (X)", "process X pid Y", "pid Y (X)", ...). Also fixes a bug at startProcess(): a log statement streamed the raw 'this' pointer instead of process identity, which prints as "1"/"true" under the fallback console logger instead of anything useful. Two logs that previously omitted process identity entirely (file-wait error, PID-map insertion failure) now include it too.
Per review feedback (NicolasFussberger): logId() returned std::string,
heap-allocating on every log call, which must be avoided after
initialization.
- logId() now returns ProcessLogId, a small trivially-copyable struct
(IdentifierHash + osal::ProcessID) instead of building a std::string.
Formatting happens only when a log line is actually printed, via
operator<< overloads for both std::ostream and score::mw::log::LogStream
(mirroring the exact dual-overload pattern IdentifierHash already
uses for the two supported logging backends). No heap allocation.
Per review feedback (danth): for readability, the process identity
should consistently lead every log message rather than appearing in
the middle or at the end.
- Reordered all 19 call sites so every one now reads
`LM_LOG_*() << logId() << "<description>";`, replacing the previous
mixed styles ("Setting up alive supervision for" << logId(),
"Starting" << logId() << "from executable" ..., etc.).
14369ea to
d783f27
Compare
|
@NicolasFussberger changes are applied, and ready for review whenever you have the time |
|
|
||
| std::ostream& operator<<(std::ostream& os, const ProcessLogId& id) | ||
| { | ||
| return os << "Name: " << id.identifier << ", PID: " << id.pid; |
There was a problem hiding this comment.
| return os << "Name: " << id.identifier << ", PID: " << id.pid; | |
| return os << "Name:" << id.identifier << ", PID:" << id.pid; |
The mw::log automatically inserts a whitespace when using the stream operator
| namespace score::mw::lifecycle::internal | ||
| { | ||
|
|
||
| score::mw::log::LogStream& operator<<(score::mw::log::LogStream& stream, const ProcessLogId& id) |
There was a problem hiding this comment.
Is there a way to unify this with the other definition using ostream?
Currently, it is a bit duplicated
Share the "Name:<name>, PID:<pid>" formatting between the std::ostream and score::mw::log::LogStream overloads via one templated helper instead of duplicating the same stream expression in each, and drop the manual spaces after the labels since LogStream already inserts a whitespace between successive stream operations. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add a private logId() helper that renders a consistent identity string, "Name: , PID: ", and use it at all 19 call sites in ProcessInfoNode that previously formatted process identity differently ("process X", "process (X)", "process X pid Y", "pid Y (X)", ...).
Also fixes a bug at startProcess(): a log statement streamed the raw 'this' pointer instead of process identity, which prints as "1"/"true" under the fallback console logger instead of anything useful.
Two logs that previously omitted process identity entirely (file-wait error, PID-map insertion failure) now include it too.
fixes #570