Skip to content

Commit e1bf9fa

Browse files
committed
Prep work for logging
Signed-off-by: Šimon Brandner <[email protected]>
1 parent c566e57 commit e1bf9fa

File tree

4 files changed

+63
-4
lines changed

4 files changed

+63
-4
lines changed

Cargo.lock

Lines changed: 26 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/oblichey-cli/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ serde_with = "3.9.0"
3131
toml = "0.8.19"
3232
mockall = "0.13.0"
3333
mockall_double = "0.3.1"
34+
log = "0.4.22"
35+
flexi_logger = "0.29.0"
3436

3537
[features]
3638
rgb-webcam = []

crates/oblichey-cli/src/main.rs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ mod store;
99
use camera::Frame;
1010
use clap::Parser;
1111
use config::Config;
12+
use flexi_logger::{FileSpec, Logger, WriteMode};
1213
use processors::auth_processor::AuthProcessor;
1314
use processors::face::{FaceEmbedding, FaceForGUI};
1415
use processors::face_processor::FaceProcessor;
@@ -18,7 +19,10 @@ use std::process::ExitCode;
1819
use std::sync::atomic::{AtomicBool, Ordering};
1920
use std::sync::{Arc, Mutex};
2021
use std::thread::{self};
21-
use store::{load_face_embeddings, remove_face_embedding, save_face_embedding};
22+
use store::{get_log_directory, load_face_embeddings, remove_face_embedding, save_face_embedding};
23+
24+
const LOG_LEVEL: &str = "trace";
25+
const LOG_FILE_BASE_NAME: &str = "oblichey";
2226

2327
#[derive(PartialEq, Eq, Debug, Clone, clap::Subcommand)]
2428
enum Command {
@@ -49,6 +53,27 @@ struct Args {
4953
}
5054

5155
fn main() -> ExitCode {
56+
let log_directory = get_log_directory().expect("Failed to get log directory");
57+
let log_spec = match Logger::try_with_str(LOG_LEVEL) {
58+
Ok(s) => s,
59+
Err(e) => {
60+
println!("Failed to create log spec: {e}");
61+
return ExitCode::FAILURE;
62+
}
63+
};
64+
if let Err(e) = log_spec
65+
.log_to_file(
66+
FileSpec::default()
67+
.basename(LOG_FILE_BASE_NAME)
68+
.directory(log_directory),
69+
)
70+
.write_mode(WriteMode::BufferAndFlush)
71+
.start()
72+
{
73+
println!("Failed to start logger: {e}");
74+
return ExitCode::FAILURE;
75+
};
76+
5277
let args = Args::parse();
5378
let command = args.command;
5479
let config = match Config::load() {

crates/oblichey-cli/src/store.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::{
99
path::PathBuf,
1010
};
1111

12-
const EMBEDDINGS_DIRECTORY: &str = "oblichey";
12+
const OBLICHEY_DIRECTORY_NAME: &str = "oblichey";
1313

1414
#[derive(Debug)]
1515
pub enum Error {
@@ -48,7 +48,7 @@ impl From<bincode::Error> for Error {
4848

4949
fn get_embeddings_directory() -> Result<PathBuf, Error> {
5050
let state_dir = env::var("XDG_STATE_HOME")?;
51-
let embeddings_dir_path = PathBuf::from(state_dir).join(EMBEDDINGS_DIRECTORY);
51+
let embeddings_dir_path = PathBuf::from(state_dir).join(OBLICHEY_DIRECTORY_NAME);
5252

5353
if let Err(e) = create_dir(embeddings_dir_path.clone()) {
5454
if e.kind() != io::ErrorKind::AlreadyExists {
@@ -63,6 +63,13 @@ fn get_face_embedding_file_path(name: &str) -> Result<PathBuf, Error> {
6363
Ok(get_embeddings_directory()?.join(name))
6464
}
6565

66+
pub fn get_log_directory() -> Result<PathBuf, Error> {
67+
let cache_dir = env::var("XDG_CACHE_HOME")?;
68+
let log_dir_path = PathBuf::from(cache_dir).join(OBLICHEY_DIRECTORY_NAME);
69+
70+
Ok(log_dir_path)
71+
}
72+
6673
pub fn save_face_embedding(name: &str, face_embedding: &FaceEmbedding) -> Result<(), Error> {
6774
let path = get_face_embedding_file_path(name)?;
6875
let serialized: Vec<u8> = serialize(&face_embedding)?;

0 commit comments

Comments
 (0)