Skip to content

Runtime-sink-close

Close a RuntimeSink. This is the direct runtime sink lifecycle API behind configured logger close behavior.

Interface

moonbit
pub fn RuntimeSink::close(self : RuntimeSink) -> Bool {

input

  • self : RuntimeSink - Runtime sink whose underlying resources should be closed.

output

  • Bool - Whether the concrete runtime sink reported a successful close action.

Explanation

Detailed rules explaining key parameters and behaviors

  • Plain console-style runtime sinks return true because they do not have a meaningful close step here.
  • Plain file runtime sinks forward directly to FileSink::close().
  • Queued file runtime sinks close the wrapped file sink rather than only the queue wrapper.
  • Generic close() on QueuedFile does not drain or flush queued records first; it closes the inner file sink directly.
  • Queue-wrapped console-style runtime sinks return true as a no-op success.
  • This method is the direct sink-level API used by ConfiguredLogger::close(...).
  • For file-backed runtime sinks, later close() calls return false after the handle has already been cleared.

How to Use

Here are some specific examples provided.

When Need Direct Runtime Teardown

When code owns a RuntimeSink and should release its underlying resources:

moonbit
ignore(sink.close())

In this example, sink teardown happens without going through a logger wrapper.

When Need To Observe Close Outcome

When application code wants a success flag from the direct runtime sink:

moonbit
let closed = sink.close()

In this example, callers can branch on the reported close result.

Error Case

e.g.:

  • If the runtime sink shape has no real close action, the method may still return true as a no-op success.

  • If a file-backed runtime sink was already closed earlier through this sink or another facade sharing the same underlying state, a later close attempt returns false.

  • If callers know they are working with a direct FileSink, FileSink::close() is the narrower API.

Notes

  1. Use this helper when code is managing a RuntimeSink value directly.

  2. Use file_close() instead of generic close() when queued file sinks should flush pending records before file teardown.

  3. ConfiguredLogger::close(...) is the higher-level wrapper for config-built loggers.

Published from the repository docs folder with VitePress.