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

Verbose/debug logging #188

Open
andrewbaxter opened this issue Nov 26, 2023 · 2 comments
Open

Verbose/debug logging #188

andrewbaxter opened this issue Nov 26, 2023 · 2 comments

Comments

@andrewbaxter
Copy link

I'm trying to figure out how this works, between this library, libjack2, and pipewire-jack. Libjack2 logging depends on JackGlobals.fVerbose being truthy.

AFAICT libjack2 connects to the server then sets JackGlobals.fVerbose based on shared memory with the server. I don't see anything in pipewire-jack that looks like shared memory, so I'm not sure how this works. But libjack2 does logging before connecting to the server, so this is moot.

I think doing JackGlobals::fVerbose = 1 is normal and expected. Would it be possible to expose a method to do this somewhere (for pre-connect logging)? I'm not sure if bindgen supports global variable access.

@wmedrano
Copy link
Member

Adding to bindings

🤔 I have some doubt, but I haven't coded to Jack2 specifically. I thought the JACK API was C and although Jack2 is made in C++ it exposes only the standard C API.

For, if you can do it, maybe if there is a C API. The C bindings have 2 ways of loading the symbols. Dynamic loading (default) and static which is the standard. When using dynamic, we search libjack for the symbol and store it. If the symbol does not exist, then we can panic or return an error.

Logging

Is the problem you are facing that there is not enough logging from JACK? After initializing a JACK client, rust-jack hooks up JACK's info and error callbacks to the standard log crate info! and error! macros.

This happens at https://github.com/RustAudio/rust-jack/blob/main/src/client/client_impl.rs#L64

However, I just noticed that for some reason we silence JACK at the start. Not really why we do this but we should probably not completely silence JACK's logging. We can probably revert this if it works with JACK2 and Pipewire.

Speaking of this, I'll see if I can add Pipewire to GitHub's CI.

@andrewbaxter
Copy link
Author

andrewbaxter commented Sep 12, 2024

Ah thanks! IIRC I hooked up a logger to those macros and still didn't get the logs I was looking for.

I'll add though that I'm not currently working on the project where I initially needed this so I can't help test immediately... I think I ended up figuring out the issue with strace or liberal google searching and maybe some blind trial and error + luck. I'm sure I'll need this again someday in the future though so it'd be good to have.

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

2 participants