| 120 | ) |
| 121 | |
| 122 | def emit(self, record): |
| 123 | # Early return when no email will be sent. |
| 124 | if ( |
| 125 | not settings.ADMINS |
| 126 | # Method not overridden. |
| 127 | and self.send_mail.__func__ is AdminEmailHandler.send_mail |
| 128 | ): |
| 129 | return |
| 130 | try: |
| 131 | request = record.request |
| 132 | subject = "%s (%s IP): %s" % ( |
| 133 | record.levelname, |
| 134 | ( |
| 135 | "internal" |
| 136 | if request.META.get("REMOTE_ADDR") in settings.INTERNAL_IPS |
| 137 | else "EXTERNAL" |
| 138 | ), |
| 139 | record.getMessage(), |
| 140 | ) |
| 141 | except Exception: |
| 142 | subject = "%s: %s" % (record.levelname, record.getMessage()) |
| 143 | request = None |
| 144 | subject = self.format_subject(subject) |
| 145 | |
| 146 | # Since we add a nicely formatted traceback on our own, create a copy |
| 147 | # of the log record without the exception data. |
| 148 | no_exc_record = copy(record) |
| 149 | no_exc_record.exc_info = None |
| 150 | no_exc_record.exc_text = None |
| 151 | |
| 152 | if record.exc_info: |
| 153 | exc_info = record.exc_info |
| 154 | else: |
| 155 | exc_info = (None, record.getMessage(), None) |
| 156 | |
| 157 | reporter = self.reporter_class(request, is_email=True, *exc_info) |
| 158 | message = "%s\n\n%s" % ( |
| 159 | self.format(no_exc_record), |
| 160 | reporter.get_traceback_text(), |
| 161 | ) |
| 162 | html_message = reporter.get_traceback_html() if self.include_html else None |
| 163 | self.send_mail(subject, message, html_message=html_message) |
| 164 | |
| 165 | def send_mail(self, subject, message, *args, **kwargs): |
| 166 | # RemovedInDjango70Warning. |