33import inspect
44import logging
55import os
6-
7- from sys import stderr , stdout
6+ import sys
87
98from asgi_correlation_id import correlation_id
109from loguru import logger
@@ -37,12 +36,12 @@ def emit(self, record: logging.LogRecord):
3736
3837def setup_logging ():
3938 """
40- From https://pawamoy. github.io/posts/unify-logging-for-a- gunicorn-uvicorn-app/
39+ From https://github.com/benoitc/ gunicorn/issues/1572#issuecomment-638391953
4140 https://github.com/pawamoy/pawamoy.github.io/issues/17
4241 """
43- # Intercept everything at the root logger
42+ # Set the logging handler and level
4443 logging .root .handlers = [InterceptHandler ()]
45- logging .root .setLevel (settings . LOG_ROOT_LEVEL )
44+ logging .root .setLevel ('NOTSET' )
4645
4746 # Remove all log handlers and propagate to root logger
4847 for name in logging .root .manager .loggerDict .keys ():
@@ -55,70 +54,65 @@ def setup_logging():
5554 # Debug log handlers
5655 # logging.debug(f'{logging.getLogger(name)}, {logging.getLogger(name).propagate}')
5756
58- # Remove every other logger's handlers
59- logger .remove ()
60-
61- # Define the correlation_id filter function
62- # https://github.com/snok/asgi-correlation-id?tab=readme-ov-file#configure-logging
57+ # Define the correlation_id default filter function
6358 # https://github.com/snok/asgi-correlation-id/issues/7
64- def correlation_id_filter (record ) -> bool :
59+ def correlation_id_filter (record ):
6560 cid = correlation_id .get (settings .LOG_CID_DEFAULT_VALUE )
6661 record ['correlation_id' ] = cid [: settings .LOG_CID_UUID_LENGTH ]
67- return True
62+ return record
63+
64+ # Remove default loguru logger
65+ logger .remove ()
6866
69- # Configure loguru logger before starts logging
67+ # Set the loguru default handlers
7068 logger .configure (
7169 handlers = [
7270 {
73- 'sink' : stdout ,
74- 'level' : settings .LOG_STDOUT_LEVEL ,
75- 'filter' : lambda record : correlation_id_filter (record ) and record ['level' ].no <= 25 ,
76- 'format' : settings .LOG_STD_FORMAT ,
77- },
78- {
79- 'sink' : stderr ,
80- 'level' : settings .LOG_STDERR_LEVEL ,
81- 'filter' : lambda record : correlation_id_filter (record ) and record ['level' ].no >= 30 ,
71+ 'sink' : sys .stdout ,
72+ 'filter' : lambda record : correlation_id_filter (record ),
8273 'format' : settings .LOG_STD_FORMAT ,
83- },
74+ }
8475 ]
8576 )
8677
8778
88- def set_customize_logfile ():
79+ def set_custom_logfile ():
8980 log_path = path_conf .LOG_DIR
9081 if not os .path .exists (log_path ):
9182 os .mkdir (log_path )
9283
9384 # log files
94- log_stdout_file = os .path .join (log_path , settings .LOG_STDOUT_FILENAME )
95- log_stderr_file = os .path .join (log_path , settings .LOG_STDERR_FILENAME )
85+ log_access_file = os .path .join (log_path , settings .LOG_ACCESS_FILENAME )
86+ log_error_file = os .path .join (log_path , settings .LOG_ERROR_FILENAME )
9687
97- # loguru logger: https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
88+ # set loguru logger default config
89+ # https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
9890 log_config = {
99- 'rotation' : '10 MB' ,
100- 'retention' : '15 days' ,
101- 'compression' : 'tar.gz' ,
102- 'enqueue' : True ,
10391 'format' : settings .LOG_FILE_FORMAT ,
92+ 'enqueue' : True ,
93+ 'rotation' : '5 MB' ,
94+ 'retention' : '7 days' ,
95+ 'compression' : 'tar.gz' ,
10496 }
10597
10698 # stdout file
10799 logger .add (
108- str (log_stdout_file ),
109- level = settings .LOG_STDOUT_LEVEL ,
110- ** log_config ,
100+ str (log_access_file ),
101+ level = settings .LOG_ACCESS_LEVEL ,
102+ filter = lambda record : record [ 'level' ]. no <= 25 ,
111103 backtrace = False ,
112104 diagnose = False ,
105+ ** log_config ,
113106 )
114107
115108 # stderr file
116109 logger .add (
117- str (log_stderr_file ),
118- level = settings .LOG_STDERR_LEVEL ,
119- ** log_config ,
110+ str (log_error_file ),
111+ level = settings .LOG_ERROR_LEVEL ,
112+ filter = lambda record : record [ 'level' ]. no >= 30 ,
120113 backtrace = True ,
121114 diagnose = True ,
115+ ** log_config ,
122116 )
123117
124118
0 commit comments