django-activity-audit 1.3.0.dev12__tar.gz → 1.3.0.dev13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/PKG-INFO +1 -1
  2. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/__init__.py +6 -2
  3. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/constants.py +11 -0
  4. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/formatters.py +5 -6
  5. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/handlers.py +3 -3
  6. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/utils.py +13 -2
  7. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/pyproject.toml +1 -1
  8. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/.gitignore +0 -0
  9. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/.pre-commit-config.yaml +0 -0
  10. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/LICENSE +0 -0
  11. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/MANIFEST.in +0 -0
  12. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/README.md +0 -0
  13. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/README.rst +0 -0
  14. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/REVIEW.md +0 -0
  15. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/apps.py +0 -0
  16. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/logger_levels.py +0 -0
  17. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/middleware.py +0 -0
  18. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/protocols.py +0 -0
  19. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/settings.py +0 -0
  20. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/signals.py +0 -0
  21. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/unregistered.py +0 -0
  22. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/docs/django-activity-audit.md +0 -0
  23. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/docs/user-activity-feed-plan.md +0 -0
  24. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/hatch +0 -0
  25. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/pytest.ini +0 -0
  26. {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-activity-audit
3
- Version: 1.3.0.dev12
3
+ Version: 1.3.0.dev13
4
4
  Summary: A Django package for easy CRUD operation logging and container logs
5
5
  Project-URL: Homepage, https://github.com/shree256/django-activity-audit
6
6
  Project-URL: Repository, https://github.com/shree256/django-activity-audit
@@ -8,7 +8,9 @@ from activity_audit.utils import (
8
8
  get_async_login_handler,
9
9
  get_audit_handler,
10
10
  get_console_formatter,
11
- get_json_formatter,
11
+ get_app_formatter,
12
+ get_api_formatter,
13
+ get_audit_formatter,
12
14
  get_json_handler,
13
15
  get_login_handler,
14
16
  )
@@ -17,7 +19,9 @@ from . import logger_levels
17
19
 
18
20
  __all__ = [
19
21
  "get_console_formatter",
20
- "get_json_formatter",
22
+ "get_app_formatter",
23
+ "get_api_formatter",
24
+ "get_audit_formatter",
21
25
  "get_json_handler",
22
26
  "get_api_handler",
23
27
  "get_audit_handler",
@@ -1,3 +1,13 @@
1
+ import enum
2
+
3
+
4
+ class LogType(str, enum.Enum):
5
+ APP = "app"
6
+ API = "api"
7
+ AUDIT = "audit"
8
+ LOGIN = "login"
9
+
10
+
1
11
  CONSOLE_FORMAT = (
2
12
  "%(levelname)s %(asctime)s %(pathname)s %(module)s %(funcName)s %(message)s"
3
13
  )
@@ -6,3 +16,4 @@ REQUEST_TYPES = [
6
16
  "internal",
7
17
  "external",
8
18
  ]
19
+
@@ -4,6 +4,7 @@ import json
4
4
  import logging
5
5
  import uuid
6
6
 
7
+ from .constants import LogType
7
8
 
8
9
  def _json_default(obj):
9
10
  """
@@ -29,7 +30,7 @@ def _json_default(obj):
29
30
  return str(obj)
30
31
 
31
32
 
32
- class JsonFormatter(logging.Formatter):
33
+ class AppFormatter(logging.Formatter):
33
34
  def __init__(self, timestamp_format: str = "%Y-%m-%d %H:%M:%S.%f"):
34
35
  super().__init__()
35
36
  self.timestamp_format = timestamp_format
@@ -50,17 +51,13 @@ class JsonFormatter(logging.Formatter):
50
51
  "request_id": getattr(record, "request_id", "") or "",
51
52
  "message": record.getMessage(),
52
53
  "exception": "",
53
- # "extra": {},
54
+ "log_type": LogType.APP,
54
55
  }
55
56
 
56
57
  # Add exception info if present for ERROR
57
58
  if record.exc_info:
58
59
  log_data["exception"] = "{}".format(self.formatException(record.exc_info))
59
60
 
60
- # Add extra fields if present
61
- # if hasattr(record, "extra"):
62
- # log_data.update(record.extra)
63
-
64
61
  return json.dumps(log_data, default=_json_default)
65
62
 
66
63
 
@@ -80,6 +77,7 @@ class APIFormatter(logging.Formatter):
80
77
  "level": record.levelname,
81
78
  "name": record.name,
82
79
  "message": record.getMessage(),
80
+ "log_type": LogType.API,
83
81
  }
84
82
 
85
83
  # Add all audit-specific fields if they exist
@@ -114,6 +112,7 @@ class AuditFormatter(logging.Formatter):
114
112
  "level": record.levelname,
115
113
  "name": record.name,
116
114
  "message": record.getMessage(),
115
+ "log_type": LogType.AUDIT,
117
116
  }
118
117
 
119
118
  audit_fields = [
@@ -3,7 +3,7 @@ import queue
3
3
 
4
4
  from logging.handlers import QueueHandler, QueueListener, RotatingFileHandler
5
5
 
6
- from .formatters import APIFormatter, AuditFormatter, JsonFormatter, LoginFormatter
6
+ from .formatters import APIFormatter, AuditFormatter, AppFormatter, LoginFormatter
7
7
  from .middleware import get_request_id
8
8
 
9
9
 
@@ -145,7 +145,7 @@ class AsyncLoginLogHandler(AsyncBaseAuditHandler):
145
145
  class AsyncJsonHandler(QueueHandler):
146
146
  """
147
147
  Non-blocking handler for general JSON logs. Wraps a RotatingFileHandler
148
- with JsonFormatter on the background thread.
148
+ with AppFormatter on the background thread.
149
149
  """
150
150
 
151
151
  def __init__(
@@ -163,7 +163,7 @@ class AsyncJsonHandler(QueueHandler):
163
163
  sync_handler = RotatingFileHandler(
164
164
  filename, mode, maxBytes, backupCount, encoding, delay
165
165
  )
166
- sync_handler.setFormatter(JsonFormatter())
166
+ sync_handler.setFormatter(AppFormatter())
167
167
  self._listener = QueueListener(
168
168
  log_queue, sync_handler, respect_handler_level=True
169
169
  )
@@ -7,9 +7,19 @@ def get_console_formatter() -> dict:
7
7
  }
8
8
 
9
9
 
10
- def get_json_formatter() -> dict:
10
+ def get_app_formatter() -> dict:
11
11
  return {
12
- "()": "activity_audit.formatters.JsonFormatter",
12
+ "()": "activity_audit.formatters.AppFormatter",
13
+ }
14
+
15
+ def get_api_formatter() -> dict:
16
+ return {
17
+ "()": "activity_audit.formatters.APIFormatter"
18
+ }
19
+
20
+ def get_audit_formatter() -> dict:
21
+ return {
22
+ "()": "activity_audit.formatters.AuditFormatter"
13
23
  }
14
24
 
15
25
 
@@ -30,6 +40,7 @@ def get_json_handler(
30
40
  }
31
41
 
32
42
 
43
+
33
44
  def get_api_handler(
34
45
  filename: str = "audit_logs/api.log",
35
46
  ) -> dict:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "django-activity-audit"
3
- version = "1.3.0.dev12"
3
+ version = "1.3.0.dev13"
4
4
  description = "A Django package for easy CRUD operation logging and container logs"
5
5
  authors = [
6
6
  { name = "Shreeshan", email = "shreeshan256@gmail.com" }