1
- # import logging
2
- # from pythonjsonlogger import jsonlogger
3
- #
4
- # def setup_logging():
5
- # """
6
- # Configures logging for both the application and Uvicorn.
7
- # """
8
- # # Root logger
9
- # root_logger = logging.getLogger()
10
- # root_logger.setLevel(logging.INFO)
11
- #
12
- # # JSON formatter
13
- # formatter = jsonlogger.JsonFormatter('%(asctime)s %(levelname)s %(funcName)s %(message)s %(filename)s %(lineno)d')
14
- #
15
- # # Stream handler for console output
16
- # handler = logging.StreamHandler()
17
- # handler.setFormatter(formatter)
18
- # root_logger.addHandler(handler)
19
- #
20
- # # Uvicorn access logger
21
- # uvicorn_access_logger = logging.getLogger("uvicorn.access")
22
- # uvicorn_access_logger.handlers = [handler]
23
- # uvicorn_access_logger.propagate = False
24
- #
25
- # # Uvicorn error logger
26
- # uvicorn_error_logger = logging.getLogger("uvicorn.error")
27
- # uvicorn_error_logger.handlers = [handler]
28
- # uvicorn_error_logger.propagate = False
1
+ import logging
2
+ from pythonjsonlogger import jsonlogger
3
+
4
+
5
+ def setup_logging (logger_name : str = "myapp" ) -> logging .Logger :
6
+ """
7
+ Configures logging for the application and Uvicorn, and returns a logger instance.
8
+
9
+ Args:
10
+ logger_name (str): Name of the application logger.
11
+
12
+ Returns:
13
+ logging.Logger: Configured application logger instance.
14
+ """
15
+ # JSON formatter
16
+ formatter = jsonlogger .JsonFormatter (
17
+ '%(asctime)s %(levelname)s %(funcName)s %(message)s %(filename)s %(lineno)d'
18
+ )
19
+
20
+ # Stream handler
21
+ handler = logging .StreamHandler ()
22
+ handler .setFormatter (formatter )
23
+
24
+ # Root logger setup
25
+ root_logger = logging .getLogger ()
26
+ if not root_logger .hasHandlers ():
27
+ root_logger .setLevel (logging .INFO )
28
+ root_logger .addHandler (handler )
29
+
30
+ # Uvicorn access logger setup
31
+ uvicorn_access_logger = logging .getLogger ("uvicorn.access" )
32
+ uvicorn_access_logger .handlers = [handler ]
33
+ uvicorn_access_logger .propagate = False
34
+
35
+ # Uvicorn error logger setup
36
+ uvicorn_error_logger = logging .getLogger ("uvicorn.error" )
37
+ uvicorn_error_logger .handlers = [handler ]
38
+ uvicorn_error_logger .propagate = False
39
+
40
+ # Application logger
41
+ app_logger = logging .getLogger (logger_name )
42
+ if not app_logger .hasHandlers ():
43
+ app_logger .setLevel (logging .INFO )
44
+ app_logger .addHandler (handler )
45
+
46
+ return app_logger
0 commit comments