Skip to content

Commit

Permalink
[0.27.4] Add ability to omit the basename cleanly
Browse files Browse the repository at this point in the history
  • Loading branch information
emabee committed Jan 21, 2024
1 parent c444cae commit f940895
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 32 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.27.4] - 2024-01-20

Add ability to omit the basename cleanly, without leading underscore
([issue #153](https://github.com/emabee/flexi_logger/issues/153),
kudos to [krystejj](https://github.com/krystejj).

## [0.27.3] - 2023-11-10

Fix [issue #152](https://github.com/emabee/flexi_logger/issues/152).
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "flexi_logger"
version = "0.27.3"
version = "0.27.4"
authors = ["emabee <meinolf.block@sap.com>"]
categories = ["development-tools::debugging"]
description = """
Expand Down
67 changes: 41 additions & 26 deletions src/file_spec.rs
Expand Up @@ -100,9 +100,8 @@ impl FileSpec {
///
/// Equivalent to `basename("")`.
#[must_use]
pub fn suppress_basename(mut self) -> Self {
self.basename = "".into();
self
pub fn suppress_basename(self) -> Self {
self.basename("")
}

/// The specified String is used as the basename of the log file name,
Expand Down Expand Up @@ -223,11 +222,11 @@ impl FileSpec {
filename.reserve(50);

if let Some(discriminant) = &self.o_discriminant {
if !filename.is_empty() { filename.push('_'); }
FileSpec::separate_with_underscore(&mut filename);
filename.push_str(discriminant);
}
if let Some(timestamp) = &self.timestamp_cfg.get_timestamp() {
if !filename.is_empty() { filename.push('_'); }
FileSpec::separate_with_underscore(&mut filename);
filename.push_str(timestamp);
}
if let Some(infix) = o_infix {
Expand All @@ -243,17 +242,23 @@ impl FileSpec {
p_path
}

fn separate_with_underscore(filename: &mut String) {
if !filename.is_empty() {
filename.push('_');
}
}

// <directory>/<basename>_<discr>_<timestamp><infix_pattern>.<suffix>
pub(crate) fn as_glob_pattern(&self, infix_pattern: &str, o_suffix: Option<&str>) -> String {
let mut filename = self.basename.clone();
filename.reserve(50);

if let Some(discriminant) = &self.o_discriminant {
if !filename.is_empty() { filename.push('_'); }
FileSpec::separate_with_underscore(&mut filename);
filename.push_str(discriminant);
}
if let Some(timestamp) = &self.timestamp_cfg.get_timestamp() {
if !filename.is_empty() { filename.push('_'); }
FileSpec::separate_with_underscore(&mut filename);
filename.push_str(timestamp);
}
filename.push_str(infix_pattern);
Expand Down Expand Up @@ -308,12 +313,11 @@ mod test {
let ts = TimestampCfg::Yes;
let s = ts.get_timestamp().unwrap(/* OK */);
let bytes = s.into_bytes();
assert_eq!(bytes[0], b'_');
assert_eq!(bytes[5], b'-');
assert_eq!(bytes[8], b'-');
assert_eq!(bytes[11], b'_');
assert_eq!(bytes[14], b'-');
assert_eq!(bytes[17], b'-');
assert_eq!(bytes[4], b'-');
assert_eq!(bytes[7], b'-');
assert_eq!(bytes[10], b'_');
assert_eq!(bytes[13], b'-');
assert_eq!(bytes[16], b'-');
}

#[test]
Expand All @@ -322,13 +326,14 @@ mod test {
assert_file_spec(&path, &PathBuf::from("."), true, "log");
}

// todo: does not support suppress_timestamp & suppress_basename & use discriminant
fn assert_file_spec(path: &Path, folder: &Path, with_timestamp: bool, suffix: &str) {
// check folder
assert_eq!(
path.parent().unwrap(), // .canonicalize().unwrap()
folder // .canonicalize().unwrap()
);
// check filestem
// check file stem
// - should start with progname
let progname = PathBuf::from(std::env::args().next().unwrap())
.file_stem()
Expand Down Expand Up @@ -428,6 +433,7 @@ mod test {
.as_pathbuf(None);
// check folder
assert_eq!(path.parent().unwrap(), PathBuf::from("/a/b/c"));

// check filestem
// - should start with progname
let stem = path
Expand Down Expand Up @@ -465,17 +471,26 @@ mod test {

#[test]
fn test_discriminant() {
{
let path = FileSpec::try_from("/a/b/c/d_foo_bar.trc")
.unwrap()
.directory("/x/y/z")
.o_suffix(Some("txt"))
.o_discriminant(Some("1234"))
.as_pathbuf(None);
assert_eq!(
path.file_name().unwrap().to_str().unwrap(),
"d_foo_bar_1234.txt"
);
}
let path = FileSpec::try_from("/a/b/c/d_foo_bar.trc")
.unwrap()
.directory("/x/y/z")
.o_suffix(Some("txt"))
.o_discriminant(Some("1234"))
.as_pathbuf(None);
assert_eq!(
path.file_name().unwrap().to_str().unwrap(),
"d_foo_bar_1234.txt"
);
}

#[test]
fn test_suppress_basename() {
let path = FileSpec::try_from("/a/b/c/d_foo_bar.trc")
.unwrap()
.suppress_basename()
.o_suffix(Some("txt"))
.o_discriminant(Some("1234"))
.as_pathbuf(None);
assert_eq!(path.file_name().unwrap().to_str().unwrap(), "1234.txt");
}
}
10 changes: 5 additions & 5 deletions tests/test_file_writer.rs
Expand Up @@ -76,16 +76,16 @@ fn work(value: u8) {
6 => {
logger = logger.format(opt_format).log_to_file(
FileSpec::default()
.directory(self::test_utils::dir())
.suppress_basename(),
.directory(self::test_utils::dir())
.suppress_basename(),
);
}
7 => {
logger = logger.format(opt_format).log_to_file(
FileSpec::default()
.directory(self::test_utils::dir())
.suppress_basename()
.discriminant("foo"),
.directory(self::test_utils::dir())
.suppress_basename()
.discriminant("foo"),
);
}
COUNT..=u8::MAX => {
Expand Down

0 comments on commit f940895

Please sign in to comment.