File size: 1,954 Bytes
9c1f8dd f0ddd3d 9c1f8dd d8ce952 9c1f8dd d8ce952 5e8ab35 d8ce952 cbc4a0d d8ce952 cbc4a0d 2b08e0e cbc4a0d 385c0fd d8ce952 2b08e0e d8ce952 385c0fd d8ce952 9c1f8dd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import logging
# import request
import streamlit as st
from streamlit import runtime
from streamlit.runtime.scriptrunner import get_script_run_ctx
# def get_remote_ip() -> str:
# # """Get remote ip."""
# # try:
# # ctx = get_script_run_ctx()
# # if ctx is None:
# # return None
# # session_info = runtime.get_instance().get_client(ctx.session_id)
# # if session_info is None:
# # return None
# # except Exception as e:
# # return None
# return getpass.getuser()
import subprocess
def get_remote_ip():
try:
result = subprocess.run(['whoami'], capture_output=True, text=True)
username = result.stdout.strip()
return username
except Exception as e:
return str(e)
# Example usage
st.write(get_remote_ip())
class ContextFilter(logging.Filter):
def filter(self, record):
record.user_ip = get_remote_ip()
return super().filter(record)
def init_logging():
# Make sure to instanciate the logger only once
# otherwise, it will create a StreamHandler at every run
# and duplicate the messages
# create a custom logger
logger = logging.getLogger("foobar")
if logger.handlers: # logger is already setup, don't setup again
return
logger.propagate = False
logger.setLevel(logging.INFO)
# in the formatter, use the variable "user_ip"
formatter = logging.Formatter("%(name)s %(asctime)s %(levelname)s [user_ip=%(user_ip)s] - %(message)s")
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
handler.addFilter(ContextFilter())
handler.setFormatter(formatter)
logger.addHandler(handler)
def main():
logger.info("Inside main")
st.title("Title")
text = st.sidebar.text_input("Text:")
logger.info(f"This is the text: {text}")
if __name__ == "__main__":
init_logging()
logger = logging.getLogger("foobar")
main() |