标签: django-logging

为什么Django日志记录会跳过日志条目?

这是我的设置模块:

LOGGING = {
  'version': 1,
  'disable_existing_loggers': False,
  'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/django-python/django/testapp/testapp.log',
    },
  },
  'loggers': {
    'django': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
  },
}
Run Code Online (Sandbox Code Playgroud)

这是我在视图文件中的代码:

import logging
logger = logging.getLogger(__name__)
logger.info("this is an error message!!")
Run Code Online (Sandbox Code Playgroud)

我从各种模块获取以前的日志,但不是上面的日志条目"这是一条错误消息".

django django-logging

21
推荐指数
3
解决办法
1万
查看次数

创建自定义django日志记录处理程序.'module'对象没有属性'handlers'

我正在尝试创建一个基于类的日志记录处理程序,当应用程序使用django提供的一些内置日志记录配置查看DisallowedHost异常时,它会通知某些第三方服务.

但是,我收到一个特殊的import错误,我无法理解如何解决.

我的settings.py

LOGGING = {
    ...
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'notify_my_service': {
            'level': 'ERROR',
            'class': 'tools.exception_logging.NotifyMyServiceHandler'
        }
    },
    'loggers': {
        ...
        'django.security.DisallowedHost': {
            'handlers': ['notify_my_service'],
            'propagate': False,
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

我的异常处理程序

import logging

class NotifyMyServiceHandler(logging.handlers.HTTPHandler):
    def emit(self, error):
        doSomething()
Run Code Online (Sandbox Code Playgroud)

大回溯

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 250, in raise_last_exception
    six.reraise(*_exception)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs) …
Run Code Online (Sandbox Code Playgroud)

django exception-handling exception django-logging django-1.11

7
推荐指数
1
解决办法
272
查看次数

显示来自Django管理命令的任务进度

我有一些Django管理命令,这些命令调用其他类中的方法以从API中获取数据。这些任务可能要花很长时间才能完成,我想以简洁的方式在控制台中显示进度。

我可以使用print()类似这样的方法来输出像“ Fetched 22 of 3000”这样的一行,该行覆盖自身:

print('Fetched %d of %d' % (n, total) + ' '*30, end='\r')
Run Code Online (Sandbox Code Playgroud)

但是使用print()似乎有点令人讨厌,并且在运行测试时它会输出到控制台。因此,使用日志记录似乎更好,但是我看不到使用该方法在控制台中显示单个不断更新的“进度”行的方法。

有没有很好的方法可以做到这一点?

python django django-logging

6
推荐指数
1
解决办法
948
查看次数

logger.info 在 Django 日志记录中不起作用

以下是我在 django settings.py文件中使用的日志记录片段。所有 GET、POST 请求都被写入日志,但是当我编写logger.info("print some") 时,它没有在控制台以及日志文件中打印/捕获

请建议一种捕获logger.info()日志的解决方法

视图.py

import logging

logger = logging.getLogger(__name__)

def custom_data_generator(request):
    logger.info("print somethig") # NOT GETTING CAPTURED IN LOG FILE
    return somethig
Run Code Online (Sandbox Code Playgroud)

settings.py( settings.py 文件中的DEBUG = True且DEBUG_MODE = False)

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'simple': {
        'format': '[%(asctime)s] %(levelname)s|%(name)s|%(message)s',
        'datefmt': '%Y-%m-%d %H:%M:%S',
    },
},
'handlers': {
    'applogfile': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': '/home/mahesh/Documents/refactor/unityapp/unity/media/myproject.log',
        'backupCount': 10,
        'formatter': 'simple',
    },
    'console': {
        'level': …
Run Code Online (Sandbox Code Playgroud)

python logging django-logging

6
推荐指数
1
解决办法
8047
查看次数

Django:记录模板错误

当我在django模板中出错时{{placeholder}},我没有收到任何错误,只是输出中我期望内容的空白。发生这种情况时,是否有办法查看日志中的内容,最好使用logging.warning或logging.error?

django logging django-templates django-logging

5
推荐指数
2
解决办法
2348
查看次数

Django 管理操作日志记录:如何显示字段更改的初始值和结果值?

我想在我的 django 项目中添加管理员更改的日志记录。我已经通过 LogEntry 模型完成了其中的一些工作:

from django.contrib.admin.models import LogEntry

class LogEntryAdmin(admin.ModelAdmin):
    list_display = ('__str__', 'action_time', 'user', 'content_type', 'object_id', 'object_repr', 'action_flag', 'change_message')
    list_filter = ('content_type',)
    search_fields = ['user__username',]
    date_hierarchy = 'action_time'

admin.site.register(LogEntry, LogEntryAdmin)
Run Code Online (Sandbox Code Playgroud)

这很棒,如果我更改数据库中某个对象的某些字段,我可以看到该操作的日志条目。但是在此日志条目中,我只能看到“字段已更改”,并且我还想查看此字段的初始值和结果值。我怎样才能实现这个功能?

django django-models django-admin django-logging

5
推荐指数
1
解决办法
1188
查看次数

Logging in Python/Django not working as expected

I have the following handler configuration for logging:

    "handlers": {
      'system_file': {
        'level': 'DEBUG',
        'class': 'logging.handlers.TimedRotatingFileHandler',
        'filename': os.path.join(LOG_FOLDER, "all.log"),
        'formatter': 'verbose',
        'when': 'midnight',
        'backupCount': '30',
      }
   }
Run Code Online (Sandbox Code Playgroud)

Now based on this configuration my logs should get rotated every midnight, i.e it should create date wise logs.

In the all.log file, everything gets logged properly with correct timestamp, but when the rotation happens, I do not see all the logs in the backup log files (previous day log files).

For example: …

python django logging django-logging python-logging

5
推荐指数
1
解决办法
172
查看次数

在 Django 中添加自定义日志记录

我已将以下日志记录配置添加到我的 Django 应用程序settings.py文件中:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

现在,我只想在 中的一个视图中添加一些自定义日志记录views.py,但看起来记录器是NOTSET,这意味着只记录级别warning和更高级别:

import logging
from django.http import JsonResponse

logger = logging.getLogger(__name__)

def testing(request):
    logger.info("Doesn't show...")
    logger.warning(f"Log Level: {logger.level} = {logging.getLevelName(logger.level)}")
    return JsonResponse({"Hello": "World"})
Run Code Online (Sandbox Code Playgroud)

上面的代码片段记录了以下内容:

Log Level: 0 = NOTSET
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?为什么没有设置记录器的级别(即使我清楚地设置了它settings.py)?

django logging django-settings django-logging

4
推荐指数
1
解决办法
2124
查看次数

有什么方法可以将当前的日志记录修改为 json 格式,并添加一些其他字段 python 日志记录

我有很多用 python django 编写的应用程序代码,每个应用程序都使用标准的 python 记录器模块,并且只记录了一个简单的消息字符串。

现在有什么方法可以添加我自己的客户中间件或 django 应用程序,当在他们的方法中调用日志记录时,它应该到达我的函数,我将为日志添加更多值,制作正确的 json 格式,然后写入日志文件。这样在当前的应用程序开发人员不需要做很多改变,除了他需要添加我的 django 应用程序或中间件

django django-middleware django-logging python-logging

3
推荐指数
1
解决办法
5171
查看次数

基数为 10 的 int() 的无效文字:'

我最近在我的项目中添加了用于错误跟踪的哨兵,并根据此处的文档配置了 raven,但出现如下所示的错误。

设置.py

import raven


INSTALLED_APPS = [    
    # 3rd party app
    'raven.contrib.django.raven_compat',
]    

RAVEN_CONFIG = {
    'dsn': 'https://*****@sentry.io/224093',
    'release': raven.fetch_git_sha(os.path.dirname(os.pardir)),
}
Run Code Online (Sandbox Code Playgroud)

错误日志

System check identified no issues (0 silenced).
October 02, 2017 - 11:31:58
Django version 1.10, using settings 'FoodCham.settings.development'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Sending message of length 2240 to https://sentry.io/api/224093/store/
Internal Server Error: /
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", …
Run Code Online (Sandbox Code Playgroud)

django python-2.7 sentry raven django-logging

1
推荐指数
1
解决办法
1219
查看次数

Django Logging - 如何删除日志文件中的 SQL 查询

我尝试让 Django Logging 记录来自服务器的错误。现在我的代码:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(PROJECT_LOCAL_URL, 'mylog.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

当我检查时mylog.log,它有太多的 sql 查询字符串 - SELECT FROM,我不想看到。我该如何配置?

在此处输入图片说明

如何删除日志文件中的所有 sql 查询?

django logging django-logging

0
推荐指数
1
解决办法
967
查看次数