Skip to main content

LineSink

Struct LineSink 

Source
pub struct LineSink { /* private fields */ }
Expand description

A rotating file sink for bytes the caller has already framed as complete lines — captured child output, forwarded worker rings, anything that is already a log line and must not be re-formatted.

The tracing layer is process-global by construction: one init per process, one destination. A supervisor needs one rotating file PER CHILD, and those bytes must reach the child’s own file unchanged rather than becoming events in the supervisor’s log. Without this type the only options are duplicating the rotation code (which then drifts from the crate that owns the policy) or shipping unrotated files (which is how a log reaches 936 MB unnoticed).

The caller owns framing: write_line appends a single trailing newline if the bytes do not already end with one, and writes exactly once so two pipes feeding one sink cannot interleave a partial line. Rotation and pruning are the same policy the layer uses, because it is the same code.

Implementations§

Source§

impl LineSink

Source

pub fn open(path: &Path, retention: Retention) -> Result<Self>

Opens (or creates) path with retention, pruning aged generations the way the layer’s own sink does on open.

Source

pub fn open_at( path: &Path, retention: Retention, now: SystemTime, ) -> Result<Self>

open with an explicit clock, so a caller can test rotation and age pruning without sleeping.

Source

pub fn write_line(&mut self, line: &[u8]) -> Result<()>

Writes one complete line, rotating first if it would exceed the cap.

Source

pub fn write_line_at(&mut self, line: &[u8], now: SystemTime) -> Result<()>

write_line with an explicit clock.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more