Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversion from log::kv::Value to Option<Vec<String>> #535

Open
lcmgh opened this issue Nov 22, 2022 · 2 comments
Open

Conversion from log::kv::Value to Option<Vec<String>> #535

lcmgh opened this issue Nov 22, 2022 · 2 comments

Comments

@lcmgh
Copy link

lcmgh commented Nov 22, 2022

Hello!

I am implementing a custom logger that prints a JSON serialized struct. The struct has a field custom_list: Option<Vec<String>> that should be derived from log::kv::Value. However I could not figure out how to convert to Vec<String> from Value? Is that a missing feature or am I overseeing something here?

MyStruct {
   custom_list: Option<Vec<String>>
}

From end users perspective:
info!(custom_list = as_serde!(vec!["a".to_string(), "b".to_string()]); "Test log msg");

Thanks

EFanZh pushed a commit to EFanZh/log that referenced this issue Jul 23, 2023
…nd optimization (rust-lang#535)

* Refactor: Extract new crate binstalk-types
* Optimize: Rm field `CrateInfo::other`
   which also removes dep serde-tuple-vec-map and serde-json from
   binstalk-types.
   
   This also makes `CrateInfo` easier to use, more generic and can be used
   over any `Serializer`, not just `serde_json::Value`.
* Mark all errors in `binstalk-manifests` as non_exhaustive
* Reduce size of `CvsParseError` by using `Box<str>`
   instead of `String` for variant `UnknownSourceType`.
* Reduce size of `CratesTomlParseError` to 16 bytes on 64bit platform
   by boxing variants `TomlWrite` and `CvsParse` as these two fields are
   significantly larger than other variants.
* Unify import style in mod `binstall_crates_v1`
* Replace dep binstalk-manifests with binstalk-types in binstalk-downloader
   to reduce its transitive dependencies and enables binstalk-downloader to
   be built in parallel to binstak-manifests.
* Replace dep binstalk-manifests with binstalk-types in binstalk
   to reduce transitive dependencies and enables binstalk to be built in
   parallel to binstalk-manifests.
   
   This is benefitial because binstalk-manifests pulls in toml_edit, which
   could takes up to 15s to be built on M1 (7-9s for codegen).
* Add dep binstalk-manifests to crates/bin
* Update dependabot and GHA release-pr

Signed-off-by: Jiahao XU <[email protected]>
@KodrAus
Copy link
Contributor

KodrAus commented Jan 31, 2024

This is quite a useful thing to be able to do, and is currently a feature gap in log. The underlying library that supports log::kv::Value did just recently get some support for pulling sequences from values: https://docs.rs/value-bag/latest/value_bag/struct.ValueBag.html#method.to_str_seq.

We could try come up with an API that makes sense for log::kv::Value too.

@AlexTMjugador
Copy link

For what it's worth, issue #641 inquires about a more generic way to solve this and other similar conversion needs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants