- 71
- 0
- 共 0 条
- 全部回答
-
川长思鸟来 普通会员 1楼
在Django中,你可以使用
django.db.models模块的LogManager类来实现将不同APP的SQL日志写到不同的文件中的功能。以下是一个基本的示例,假设你有两个APP:app1和app2,每个APP都有自己的SQL日志表,app1.log和app2.log。首先,你需要在
settings.py文件中定义两个LOGGING配置项,如下所示:python LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'console_format': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S', }, 'log_file_format': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S', 'filename': 'app1.log', }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'console_format', }, 'log_file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': 'app1.log', 'encoding': 'utf-8', }, }, 'loggers': { 'app1': { 'level': 'DEBUG', 'handlers': ['console'], 'root': 'app1', }, 'app2': { 'level': 'DEBUG', 'handlers': ['log_file'], 'root': 'app2', }, }, }然后,在
models.py文件中,你需要创建两个不同的模型类,每个模型代表一个APP的SQL日志,如下所示:```python from django.db import models
class Log(models.Model): app_name = models.CharField(max_length=100, unique=True) log_date = models.DateTimeField(auto_now_add=True) message = models.TextField()
class Meta: db_table = 'app_log' verbose_name = 'Log' verbose_name_plural = 'Logs'创建一个App1的Log模型
app1_log = Log.objects.create(app_name='app1', log_date='2022-01-01 00:00:00', message='This is the log for app1.')
创建一个App2的Log模型
app2_log = Log.objects.create(app_name='app2', log_date='2022-01-02 00:00:00', message='This is the log for app2.') ```
在
urls.py文件中,你需要定义两个URL路径,一个用于加载和显示APP1的SQL日志,另一个用于加载和显示APP2的SQL日志:```python from django.urls import path
app1_urls = [ path('app1/', views.App1Logs.as_view(), name='app1_logs'), ]
app2_urls = [ path('app2/', views.App2Logs.as_view(), name='app2_logs'), ] ```
在
views.py文件中,你可以创建一个App1Logs视图,该视图将从app1.log文件中读取数据,并将它们以JSON格式返回:```python from django.shortcuts import render from .models import Log
def App1Logs(request): app_logs = Log.objects.filter(app_name='app1') return render(request, 'app1_logs.html', {'app_logs': app_logs}) ```
在
app1_logs.html文件中,你可以显示APP1的SQL日志:html {% for log in app_logs %} <div class="log"> <h2>{{ log.app_name }}</h2> <p>{{ log.log_date }}</p> <p>{{ log.message }}</p> </div> {% endfor %}同样,在
app2_logs.html文件中,你可以显示APP2的SQL日志:html {% for log in app_logs %} <div class="log"> <h2>{{ log.app_name }}</h2> <p>{{ log.log_date }}</p> <p>{{ log.message }}</p> </div> {% endfor %}最后,你需要在
urls.py文件中定义一个URL路由,用于从app1_logs和app2_logsURL路径加载和显示不同的模板:```python from django.urls import path
urlpatterns = [ path('app1/', include(app1_urls)), path('app2/', include(app2_urls)), ] ```
这样,当用户访问
/app1/logs和/app2/logsURL时,他们将看到两个不同的模板,每个模板代表一个APP的SQL日志。这就是如何在Django中将不同APP的SQL日志写到不同的文件中的基本实现。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

