pub struct FileSinkBuilder<ArgPath> { /* private fields */ }Expand description
Implementations§
Source§impl<ArgPath> FileSinkBuilder<ArgPath>
impl<ArgPath> FileSinkBuilder<ArgPath>
Sourcepub fn path<P>(self, path: P) -> FileSinkBuilder<PathBuf>
pub fn path<P>(self, path: P) -> FileSinkBuilder<PathBuf>
The path of the log file.
This parameter is required.
Examples found in repository?
More examples
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let path = env::current_exe()?.with_file_name("async.log");
10 let file_sink = FileSink::builder().path(path).build_arc()?;
11
12 // AsyncPoolSink is a combined sink which wraps other sinks
13 let async_pool_sink = AsyncPoolSink::builder().sink(file_sink).build_arc()?;
14
15 let async_logger = Logger::builder()
16 .sink(async_pool_sink)
17 .flush_level_filter(LevelFilter::All)
18 .build_arc()?;
19
20 info!(logger: async_logger, "Hello, async!");
21
22 Ok(())
23}8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 // `spdlog-rs` has a global default logger and logs will be processed by it
10 // by default, You can configure it.
11 let default_logger = spdlog::default_logger();
12 default_logger.set_level_filter(LevelFilter::All);
13
14 // Or completely replace it with a new one.
15 let path = env::current_exe()?.with_file_name("all.log");
16 let file_sink = FileSink::builder().path(path).build_arc()?;
17
18 let new_logger = Logger::builder()
19 .level_filter(LevelFilter::All)
20 .flush_level_filter(LevelFilter::MoreSevereEqual(Level::Warn))
21 .sink(file_sink.clone())
22 .build_arc()?;
23 new_logger.set_flush_period(Some(Duration::from_secs(3)));
24 spdlog::set_default_logger(new_logger);
25
26 info!("this log will be written to the file `all.log`");
27
28 // In addition to having the global default logger, more loggers are allowed to
29 // be configured, stored and used independently.
30 let db = AppDatabase::new(file_sink)?;
31 db.write_i32(114514);
32
33 Ok(())
34}
35
36struct AppDatabase {
37 logger: Logger,
38}
39
40impl AppDatabase {
41 fn new(all_log_sink: Arc<dyn Sink>) -> Result<Self, Box<dyn std::error::Error>> {
42 let path = env::current_exe()?.with_file_name("db.log");
43 let db_file_sink = FileSink::builder().path(path).build_arc()?;
44
45 let logger = Logger::builder()
46 .name("database")
47 .level_filter(LevelFilter::All)
48 .flush_level_filter(LevelFilter::MoreSevereEqual(Level::Warn))
49 .sinks([all_log_sink, db_file_sink])
50 .build()?;
51 Ok(Self { logger })
52 }Sourcepub fn truncate(self, truncate: bool) -> Self
pub fn truncate(self, truncate: bool) -> Self
Truncates the contents when opening an existing file.
If it is true, the existing contents of the file will be discarded.
This parameter is optional, and defaults to false.
Sourcepub fn capacity(self, capacity: usize) -> Self
pub fn capacity(self, capacity: usize) -> Self
Specifies the internal buffer capacity.
This parameter is optional, and defaults to the value consistent
with std.
Sourcepub fn level_filter(self, level_filter: LevelFilter) -> Self
pub fn level_filter(self, level_filter: LevelFilter) -> Self
Specifies a log level filter.
This parameter is optional, and defaults to LevelFilter::All.
Sourcepub fn formatter<F>(self, formatter: F) -> Selfwhere
F: Formatter + 'static,
pub fn formatter<F>(self, formatter: F) -> Selfwhere
F: Formatter + 'static,
Specifies a formatter.
This parameter is optional, and defaults to FullFormatter.
Sourcepub fn error_handler<F: Into<ErrorHandler>>(self, handler: F) -> Self
pub fn error_handler<F: Into<ErrorHandler>>(self, handler: F) -> Self
Specifies an error handler.
This parameter is optional, and defaults to
ErrorHandler::default().
Source§impl FileSinkBuilder<PathBuf>
impl FileSinkBuilder<PathBuf>
Sourcepub fn build(self) -> Result<FileSink>
pub fn build(self) -> Result<FileSink>
Builds a FileSink.
§Error
If an error occurs opening the file, Error::CreateDirectory or
Error::OpenFile will be returned.
Sourcepub fn build_arc(self) -> Result<Arc<FileSink>>
pub fn build_arc(self) -> Result<Arc<FileSink>>
Builds a Arc<FileSink>.
This is a shorthand method for .build().map(Arc::new).
Examples found in repository?
More examples
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let path = env::current_exe()?.with_file_name("async.log");
10 let file_sink = FileSink::builder().path(path).build_arc()?;
11
12 // AsyncPoolSink is a combined sink which wraps other sinks
13 let async_pool_sink = AsyncPoolSink::builder().sink(file_sink).build_arc()?;
14
15 let async_logger = Logger::builder()
16 .sink(async_pool_sink)
17 .flush_level_filter(LevelFilter::All)
18 .build_arc()?;
19
20 info!(logger: async_logger, "Hello, async!");
21
22 Ok(())
23}8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 // `spdlog-rs` has a global default logger and logs will be processed by it
10 // by default, You can configure it.
11 let default_logger = spdlog::default_logger();
12 default_logger.set_level_filter(LevelFilter::All);
13
14 // Or completely replace it with a new one.
15 let path = env::current_exe()?.with_file_name("all.log");
16 let file_sink = FileSink::builder().path(path).build_arc()?;
17
18 let new_logger = Logger::builder()
19 .level_filter(LevelFilter::All)
20 .flush_level_filter(LevelFilter::MoreSevereEqual(Level::Warn))
21 .sink(file_sink.clone())
22 .build_arc()?;
23 new_logger.set_flush_period(Some(Duration::from_secs(3)));
24 spdlog::set_default_logger(new_logger);
25
26 info!("this log will be written to the file `all.log`");
27
28 // In addition to having the global default logger, more loggers are allowed to
29 // be configured, stored and used independently.
30 let db = AppDatabase::new(file_sink)?;
31 db.write_i32(114514);
32
33 Ok(())
34}
35
36struct AppDatabase {
37 logger: Logger,
38}
39
40impl AppDatabase {
41 fn new(all_log_sink: Arc<dyn Sink>) -> Result<Self, Box<dyn std::error::Error>> {
42 let path = env::current_exe()?.with_file_name("db.log");
43 let db_file_sink = FileSink::builder().path(path).build_arc()?;
44
45 let logger = Logger::builder()
46 .name("database")
47 .level_filter(LevelFilter::All)
48 .flush_level_filter(LevelFilter::MoreSevereEqual(Level::Warn))
49 .sinks([all_log_sink, db_file_sink])
50 .build()?;
51 Ok(Self { logger })
52 }