How to create/use session specific loggers?

Summary

I’m looking for a simple way to create logs specific to each user session.

I tried with python’s logging module:

Code snippet:

ss = st.session_state
if 'logger' not in ss:  
    # Setting up logger
    ss.logger = logging.getLogger(__name__)
    ss.log_stream = StringIO()
    stream_handler = logging.StreamHandler(ss.log_stream)
    ss.logger.addHandler(stream_handler)
...
#somewhere in the code:
ss.logger.info('some info')
...

The above works great. The problem is that it collects logs from all users who are using the app concurrently.

1 Like

Hey @TheDigitilizer,

Thanks for sharing this question! Sorry for the super delayed reponse.

Just wanted to add that if this app is deployed on Streamlit Community Cloud and is a private app, you could use st.experimental_user to associate the logs for a specific user with the email address they’ve used to log into Community Cloud. The docs on this feature live here.

I just want to fix something about your code.
You should not assign session_state to a variable, it can lead to errors.

1 Like

Thank you, as per the following discussion:

I am now using:
from streamlit import session_state as ss

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.