1010import traceback
1111
1212from typing import Callable # pyflakes:ignore
13-
14- try :
15- import syslog
16- logfunc = syslog .syslog # type: Callable
17- except ImportError : # import syslog will fail on Windows boxes
18- logging .basicConfig (filename = 'tracker.log' ,level = logging .INFO )
19- logfunc = logging .info
20- pass
21-
2213from django .conf import settings
14+ from pythonjsonlogger import jsonlogger
2315
2416import debug # pyflakes:ignore
2517
26- formatter = logging . Formatter ( '{levelname}: {name}:{lineno}: {message}' , style = '{' )
18+ formatter = jsonlogger . JsonFormatter
2719for name , level in settings .UTILS_LOGGER_LEVELS .items ():
2820 logger = logging .getLogger (name )
2921 if not logger .hasHandlers ():
3022 debug .say (' Adding handlers to logger %s' % logger .name )
31-
3223 handlers = [
33- logging .StreamHandler (),
34- logging .handlers .SysLogHandler (address = '/dev/log' ,
35- facility = logging .handlers .SysLogHandler .LOG_USER ),
36- ]
24+ logging .StreamHandler (),
25+ ]
3726 for h in handlers :
3827 h .setFormatter (formatter )
3928 h .setLevel (level )
@@ -56,20 +45,9 @@ def getcaller():
5645 return (pmodule , pclass , pfunction , pfile , pline )
5746
5847def log (msg , e = None ):
59- "Uses syslog by preference. Logs the given calling point and message."
60- global logfunc
61- def _flushfunc ():
62- pass
63- _logfunc = logfunc
64- if settings .SERVER_MODE == 'test' :
65- if getattr (settings , 'show_logging' , False ) is True :
66- _logfunc = debug .say
67- _flushfunc = sys .stdout .flush # pyflakes:ignore (intentional redefinition)
68- else :
48+ "Logs the given calling point and message to the logging framework's datatracker handler at severity INFO"
49+ if settings .SERVER_MODE == 'test' and not getattr (settings , 'show_logging' ,False ):
6950 return
70- elif settings .DEBUG == True :
71- _logfunc = debug .say
72- _flushfunc = sys .stdout .flush # pyflakes:ignore (intentional redefinition)
7351 if not isinstance (msg , str ):
7452 msg = msg .encode ('unicode_escape' )
7553 try :
@@ -82,11 +60,8 @@ def _flushfunc():
8260 where = " in " + func + "()"
8361 except IndexError :
8462 file , line , where = "/<UNKNOWN>" , 0 , ""
85- _flushfunc ()
86- _logfunc ("ietf%s(%d)%s: %s" % (file , line , where , msg ))
87-
88- logger = logging .getLogger ('django' )
8963
64+ logging .getLogger ("datatracker" ).info (msg = msg , extra = {"file" :file , "line" :line , "where" :where })
9065
9166
9267def exc_parts ():
@@ -124,6 +99,7 @@ def assertion(statement, state=True, note=None):
12499 This acts like an assertion. It uses the django logger in order to send
125100 the failed assertion and a backtrace as for an internal server error.
126101 """
102+ logger = logging .getLogger ("django" ) # Note this is a change - before this would have gone to "django"
127103 frame = inspect .currentframe ().f_back
128104 value = eval (statement , frame .f_globals , frame .f_locals )
129105 if bool (value ) != bool (state ):
@@ -148,6 +124,7 @@ def assertion(statement, state=True, note=None):
148124
149125def unreachable (date = "(unknown)" ):
150126 "Raises an assertion or sends traceback to admins if executed."
127+ logger = logging .getLogger ("django" )
151128 frame = inspect .currentframe ().f_back
152129 if settings .DEBUG is True or settings .SERVER_MODE == 'test' :
153130 raise AssertionError ("Arrived at code in %s() which was marked unreachable on %s." % (frame .f_code .co_name , date ))
0 commit comments