File tree Expand file tree Collapse file tree 8 files changed +72
-13
lines changed Expand file tree Collapse file tree 8 files changed +72
-13
lines changed Original file line number Diff line number Diff line change @@ -85,3 +85,9 @@ Quick start
8585 except Exception as e:
8686 db_logger.exception(e)
8787
88+
89+
90+ Options
91+ -------
92+ 1. DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE: integer. list per page in admin view. default ``10 ``
93+ 2. DJANGO_DB_LOGGER_ENABLE_FORMATTER: boolean. Using ``formatter `` options to format message.``True`` or ``False ``, default ``False ``
Original file line number Diff line number Diff line change 4444 },
4545 },
4646 'handlers' : {
47- 'db ' : {
47+ 'db_handler ' : {
4848 'level' : 'DEBUG' ,
49- 'class' : 'django_db_logger.db_log_handler.DatabaseLogHandler'
49+ 'class' : 'django_db_logger.db_log_handler.DatabaseLogHandler' ,
50+ 'formatter' : 'verbose'
5051 }
5152 },
5253 'loggers' : {
53- 'db_logger ' : {
54- 'handlers' : ['db ' ],
54+ 'db ' : {
55+ 'handlers' : ['db_handler ' ],
5556 'level' : 'DEBUG'
5657 }
5758 }
5859}
5960
61+ DJANGO_DB_LOGGER_ENABLE_FORMATTER = True
62+ DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE = 30
63+
6064TEMPLATES = [
6165 {
6266 'BACKEND' : 'django.template.backends.django.DjangoTemplates' ,
Original file line number Diff line number Diff line change 11from django .contrib import admin
22from django .urls import path
33
4+ from django_db_logger .views import __gen_500_errors
5+
46urlpatterns = [
57 path ('admin/' , admin .site .urls ),
8+ path ('__gen_500/' , __gen_500_errors )
69]
Original file line number Diff line number Diff line change 44from django .contrib import admin
55from django .utils .html import format_html
66
7+ from django_db_logger .config import DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE
78from .models import StatusLog
89
910
1011class StatusLogAdmin (admin .ModelAdmin ):
1112 list_display = ('colored_msg' , 'traceback' , 'create_datetime_format' )
1213 list_display_links = ('colored_msg' , )
1314 list_filter = ('level' , )
14- list_per_page = 10
15+ list_per_page = DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE
1516
1617 def colored_msg (self , instance ):
1718 if instance .level in [logging .NOTSET , logging .INFO ]:
@@ -28,7 +29,7 @@ def traceback(self, instance):
2829
2930 def create_datetime_format (self , instance ):
3031 return instance .create_datetime .strftime ('%Y-%m-%d %X' )
31- create_datetime_format .short_description = 'Create Datetime '
32+ create_datetime_format .short_description = 'Created at '
3233
3334
3435admin .site .register (StatusLog , StatusLogAdmin )
Original file line number Diff line number Diff line change 1+ from django .conf import settings
2+
3+ MSG_STYLE_SIMPLE = 'Simple'
4+ MSG_STYLE_FULL = 'Full'
5+
6+ DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE = getattr (settings , 'DJANGO_DB_LOGGER_ADMIN_LIST_PER_PAGE' , 10 )
7+
8+ DJANGO_DB_LOGGER_ENABLE_FORMATTER = getattr (settings , 'DJANGO_DB_LOGGER_ENABLE_FORMATTER' , False )
Original file line number Diff line number Diff line change 11import logging
2- import traceback
2+
3+ from django_db_logger .config import DJANGO_DB_LOGGER_ENABLE_FORMATTER , MSG_STYLE_SIMPLE
4+
5+
6+ db_default_formatter = logging .Formatter ()
37
48
59class DatabaseLogHandler (logging .Handler ):
@@ -9,13 +13,36 @@ def emit(self, record):
913 trace = None
1014
1115 if record .exc_info :
12- trace = traceback .format_exc ()
16+ trace = db_default_formatter .formatException (record .exc_info )
17+
18+ if DJANGO_DB_LOGGER_ENABLE_FORMATTER :
19+ msg = self .format (record )
20+ else :
21+ msg = record .getMessage ()
1322
1423 kwargs = {
1524 'logger_name' : record .name ,
1625 'level' : record .levelno ,
17- 'msg' : record . getMessage () ,
26+ 'msg' : msg ,
1827 'trace' : trace
1928 }
2029
21- StatusLog .objects .create (** kwargs )
30+ StatusLog .objects .create (** kwargs )
31+
32+ def format (self , record ):
33+ if self .formatter :
34+ fmt = self .formatter
35+ else :
36+ fmt = db_default_formatter
37+
38+ if type (fmt ) == logging .Formatter :
39+ record .message = record .getMessage ()
40+
41+ if fmt .usesTime ():
42+ record .asctime = fmt .formatTime (record , fmt .datefmt )
43+
44+ # ignore exception traceback and stack info
45+
46+ return fmt .formatMessage (record )
47+ else :
48+ return fmt .format (record )
Original file line number Diff line number Diff line change 1- from django . shortcuts import render
1+ import logging
22
3- # Create your views here.
3+ from django .http import HttpResponse
4+
5+ logger = logging .getLogger ('db' )
6+
7+ def __gen_500_errors (request ):
8+ try :
9+ 1 / 0
10+ except Exception as e :
11+ logger .exception (e )
12+
13+ return HttpResponse ('Hello 500!' )
Original file line number Diff line number Diff line change 4747 }
4848}
4949
50- SECRET_KEY = 'https://ciciui.com/ '
50+ SECRET_KEY = 'jfkladsjfakljr;els '
You can’t perform that action at this time.
0 commit comments