-
Notifications
You must be signed in to change notification settings - Fork 110
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
Docs: Document log
limitations
#921
Conversation
6cc298f
to
e52e480
Compare
@piodul I have no idea what is going on with the book job
|
The CI job takes the dependencies from the
I assume it's #926 |
behind `log` / `log-always` feature flags. | ||
|
||
The problem is that this compatibility using `log` feature (which is recommended for libraries) seems to not work well with `.with_current_subscriber()` / Tokio tasks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there an open GitHub issue about this in the tracing
project? This sounds like a legitimate issue with the compatibility layer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't find any when I was searching some time ago, I should open one
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to know more about this before we merge this documentation page. It feels wrong to document workarounds for bugs in other projects, especially if they can just be fixed by the other project.
Maybe it is a documented limitation? If so, then perhaps we can just point to that place instead of having to maintain our own description of the workaround.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I'll research it more, and not include this PR in 0.12
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to know more about this before we merge this documentation page.
On the other hand, in case that we don't manage to investigate this further before the next release, we should probably merge this to aid confused users, even if that's log
's fault that could be fixed soon.
ecd5992
to
a8bf067
Compare
Still fails with the weird stdout error after rebasing on main |
963ad6d
to
ff195c0
Compare
Fixed, it didn't parse my stdout. It interprets code blocks without language specified as Rust and tries to run them. |
ff195c0
to
3dba6c0
Compare
Happens to the best of us. |
The full [example](https://github.com/scylladb/scylla-rust-driver/tree/main/examples/logging.rs) is available in the `examples` folder |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quite a side topic, but I couldn't resist investigating it.
This usage of folder instead of the usual Unixy directory made me wonder about the very difference between these two terms, and these are some opinions:
- https://www.baeldung.com/cs/directories-vs-folders -> folder is a "leaf directory", i.e. directory without directories in it;
- https://superuser.com/questions/187900/what-is-the-difference-between-a-directory-and-a-folder -> no strong difference; directory more of a file system concept, folder more of a GUI thing.
behind `log` / `log-always` feature flags. | ||
|
||
The problem is that this compatibility using `log` feature (which is recommended for libraries) seems to not work well with `.with_current_subscriber()` / Tokio tasks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to know more about this before we merge this documentation page.
On the other hand, in case that we don't manage to investigate this further before the next release, we should probably merge this to aid confused users, even if that's log
's fault that could be fixed soon.
We recommend using tracing ecosystem, but if for some reason you need to stick with `log`, you can try | ||
enabling `log-always` feature in `tracing` by adding it to your direct dependencies (`tracing = { version = "0.1", features = [ "log-always" ] }`). | ||
This should enable driver log collection via `log` loggers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have you confirmed that this indeed works @Lorak-mmk?
If so, I suggest phrasing this as:
This will enable ...
Let's not introduce any needless uncertainty (even though in software engineering it might come out as a suitable attitude...).
``` | ||
|
||
The other feature, `log-always`, works with the driver - but is not something we want to enable in this library. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A short explanation why we don't want this feature enabled might be appreciated by the audience.
@@ -20,6 +20,7 @@ uuid = "1.0" | |||
tower = "0.4" | |||
stats_alloc = "0.1" | |||
clap = { version = "3.2.4", features = ["derive"] } | |||
env_logger = "0.10" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the future clarity, let's add a comment saying that this dependency is currently used only by the Book (as one might wonder why it's put there, having checked that cargo check --all-targets
succeeds even with that dependency removed).
Or, even better, I suggest visually extracting a section in examples/Cargo.toml
that lists Book-only deps.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From a higher perspective, this possible confusion arises because the Book is actually a secondary project that is configured by the same Cargo.toml
as the primary one (examples
set of crates).
I opened an issue in tracing: tokio-rs/tracing#2913 |
Succeeded by #992 |
This PR describes reasons why driver doesn't work with
log
out of the box and how the user can fix this.Fixes: #860
Pre-review checklist
./docs/source/
.Fixes:
annotations to PR description.