1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//! File output sink implementation
use Write;
use ;
// ============================================================================
// Example Sink Implementations
// ============================================================================
/// Example: File sink that writes all output to a file
///
/// This is an example implementation showing how to create a custom sink
/// that writes to a file. In production, you might want to add buffering,
/// rotation, or other features.
///
/// # Examples
///
/// ```rust,ignore
/// use torrust_tracker_deployer_lib::presentation::cli::views::{FileSink, UserOutput, VerbosityLevel, CompositeSink, StandardSink};
///
/// // Write to both console and file
/// let composite = CompositeSink::new(vec![
/// Box::new(StandardSink::default_console()),
/// Box::new(FileSink::new("output.log").unwrap()),
/// ]);
/// let mut output = UserOutput::with_sink(VerbosityLevel::Normal, Box::new(composite));
/// ```