robertselvam commited on
Commit
9c1f8dd
·
verified ·
1 Parent(s): b46cc0c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ import streamlit as st
4
+ from streamlit import runtime
5
+ from streamlit.runtime.scriptrunner import get_script_run_ctx
6
+
7
+ def get_remote_ip() -> str:
8
+ """Get remote ip."""
9
+
10
+ try:
11
+ ctx = get_script_run_ctx()
12
+ if ctx is None:
13
+ return None
14
+
15
+ session_info = runtime.get_instance().get_client(ctx.session_id)
16
+ if session_info is None:
17
+ return None
18
+ except Exception as e:
19
+ return None
20
+
21
+ return session_info.request.remote_ip
22
+
23
+ class ContextFilter(logging.Filter):
24
+ def filter(self, record):
25
+ record.user_ip = get_remote_ip()
26
+ return super().filter(record)
27
+
28
+ def init_logging():
29
+ # Make sure to instanciate the logger only once
30
+ # otherwise, it will create a StreamHandler at every run
31
+ # and duplicate the messages
32
+
33
+ # create a custom logger
34
+ logger = logging.getLogger("foobar")
35
+ if logger.handlers: # logger is already setup, don't setup again
36
+ return
37
+ logger.propagate = False
38
+ logger.setLevel(logging.INFO)
39
+ # in the formatter, use the variable "user_ip"
40
+ formatter = logging.Formatter("%(name)s %(asctime)s %(levelname)s [user_ip=%(user_ip)s] - %(message)s")
41
+ handler = logging.StreamHandler()
42
+ handler.setLevel(logging.INFO)
43
+ handler.addFilter(ContextFilter())
44
+ handler.setFormatter(formatter)
45
+ logger.addHandler(handler)
46
+
47
+ def main():
48
+ logger.info("Inside main")
49
+ st.title("Title")
50
+
51
+ text = st.sidebar.text_input("Text:")
52
+ logger.info(f"This is the text: {text}")
53
+
54
+ if __name__ == "__main__":
55
+ init_logging()
56
+
57
+ logger = logging.getLogger("foobar")
58
+ main()