这是我的设置模块:
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提供的一些内置日志记录配置查看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
我有一些Django管理命令,这些命令调用其他类中的方法以从API中获取数据。这些任务可能要花很长时间才能完成,我想以简洁的方式在控制台中显示进度。
我可以使用print()类似这样的方法来输出像“ Fetched 22 of 3000”这样的一行,该行覆盖自身:
print('Fetched %d of %d' % (n, total) + ' '*30, end='\r')
Run Code Online (Sandbox Code Playgroud)
但是使用print()似乎有点令人讨厌,并且在运行测试时它会输出到控制台。因此,使用日志记录似乎更好,但是我看不到使用该方法在控制台中显示单个不断更新的“进度”行的方法。
有没有很好的方法可以做到这一点?
以下是我在 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) 当我在django模板中出错时{{placeholder}},我没有收到任何错误,只是输出中我期望内容的空白。发生这种情况时,是否有办法查看日志中的内容,最好使用logging.warning或logging.error?
我想在我的 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)
这很棒,如果我更改数据库中某个对象的某些字段,我可以看到该操作的日志条目。但是在此日志条目中,我只能看到“字段已更改”,并且我还想查看此字段的初始值和结果值。我怎样才能实现这个功能?
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: …
我已将以下日志记录配置添加到我的 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)?
我有很多用 python django 编写的应用程序代码,每个应用程序都使用标准的 python 记录器模块,并且只记录了一个简单的消息字符串。
现在有什么方法可以添加我自己的客户中间件或 django 应用程序,当在他们的方法中调用日志记录时,它应该到达我的函数,我将为日志添加更多值,制作正确的 json 格式,然后写入日志文件。这样在当前的应用程序开发人员不需要做很多改变,除了他需要添加我的 django 应用程序或中间件
我最近在我的项目中添加了用于错误跟踪的哨兵,并根据此处的文档配置了 raven,但出现如下所示的错误。
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 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 ×11
django ×10
logging ×5
python ×3
django-1.11 ×1
django-admin ×1
exception ×1
python-2.7 ×1
raven ×1
sentry ×1