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
63
use crate::log_specification::LogSpecification;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum FlexiLoggerError {
#[error("Log file cannot be written because the specified path is not a directory")]
OutputBadDirectory,
#[error("Spawning the cleanup thread failed.")]
OutputCleanupThread(std::io::Error),
#[error(
"Log cannot be written, e.g. because the configured output directory is not accessible"
)]
OutputIo(#[from] std::io::Error),
#[error("Filesystem notifications for the specfile could not be set up")]
#[cfg(feature = "specfile")]
SpecfileNotify(#[from] notify::Error),
#[error("Parsing the configured logspec toml-file failed")]
#[cfg(feature = "specfile_without_notification")]
SpecfileToml(#[from] toml::de::Error),
#[error("Specfile cannot be accessed or created")]
#[cfg(feature = "specfile_without_notification")]
SpecfileIo(std::io::Error),
#[error("Specfile has an unsupported extension")]
#[cfg(feature = "specfile_without_notification")]
SpecfileExtension(&'static str),
#[error("Invalid level filter")]
LevelFilter(String),
#[error("Failed to parse log specification: {0}")]
Parse(String, LogSpecification),
#[error("Logger initialization failed")]
Log(#[from] log::SetLoggerError),
#[error("Some synchronization object is poisoned")]
Poison,
#[error("Palette parsing failed")]
Palette(#[from] std::num::ParseIntError),
}