File size: 1,714 Bytes
9c1f8dd
f0ddd3d
9c1f8dd
 
 
 
cbc4a0d
 
9c1f8dd
cbc4a0d
 
 
 
5e8ab35
cbc4a0d
 
 
 
 
 
 
 
 
 
 
 
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
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 streamlit as st
import getpass

st.write(getpass.getuser())

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()