réécriture de la configuration des loggers pour utiliser syslog

Les loggers python ne fonctionnent pas en multiprocess, il faut utiliser
un logger distant, le plus simple est d'utiliser syslog.

La configuration du logger dans le fichier local_settings.py.example a
été enlevé car c'est bien trop compliqué d'expliquer que la plupart des
handlers proposés par la librairie logging de python ne vont pas
fonctionner.

Ce commit ajoute aussi une section sur les logs au fichier README.
This commit is contained in:
Benjamin Dauvergne 2012-07-24 11:41:27 +02:00
parent 0721a9a13c
commit 08f0935ded
4 changed files with 34 additions and 43 deletions

13
README
View File

@ -31,3 +31,16 @@ Avec SQLite::
Avec PostgreSQL:
python manage.py sqlindexes | psql <db_name>
Logs
----
Les logs sont envoyés vers le syslog local via /dev/log avec pour nom de
service local0. Les logs de niveau debug ne sont envoyés que si l'option DEBUG
est à True dans votre fichier local_settings.py.
Pour récupérer ces logs dans un fichier à part vous pouvez ajouter la
ligne suivante dans le fichier de configuration du démon syslog local.::
local0.* -/var/log/polynum.log

View File

@ -87,32 +87,3 @@ TEMPLATE_DIRS = (
OAI_ADMIN_EMAIL = 'admin@univ.fr'
OAI_TEXT = 'Polynum documents'
OAI_REPOSITORY_NAME = 'Polynum OAI-PMH repository'
#
# Logging configuration
# See http://docs.djangoproject.com/en/dev/topics/logging
#
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}

View File

@ -52,7 +52,7 @@ Here starts the filter block
<div id="filter-choices">
{% for filter_choice in filter_choices %}
<div><label class="filter-title">{{ filter_choice.caption }}</label>
<p>{% for url, caption in filter_choice.choices %}
<p class="{% if filter_choice.choices|length > 5 %}long{% endif %}">{% for url, caption in filter_choice.choices %}
<a href="{{ url }}">{{ caption }}</a>
{% endfor %}</p>
</div>

View File

@ -3,11 +3,12 @@
import os.path
import django.conf.global_settings as DEFAULT_SETTINGS
from django.core.urlresolvers import reverse_lazy
from logging.handlers import SysLogHandler
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '.')
DEBUG = True
TEMPLATE_DEBUG = DEBUG
DEBUG = False
TEMPLATE_DEBUG = False
ADMINS = (
# ('Your Name', 'your_email@example.com'),
@ -161,26 +162,30 @@ CRISPY_TEMPLATE_PACK = 'bootstrap'
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
'formatters': {
'syslog': {
'format': 'polynum(pid=%(process)d) %(levelname)s %(message)s'
},
},
'handlers': {
'syslog':{
'level':'DEBUG',
'class':'logging.handlers.SysLogHandler',
'formatter': 'syslog',
'facility': SysLogHandler.LOG_LOCAL0,
'address': '/dev/log',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
'': {
'handlers': ['mail_admins', 'syslog' ],
'level': 'INFO',
},
}
},
}
AUTHENTICATION_BACKENDS = ('polynum.base.backends.ModelBackend',)
@ -208,6 +213,7 @@ if CAS_SERVER_URL:
LOGIN_REDIRECT_URL = reverse_lazy('list_request')
if DEBUG:
TEMPLATE_DEBUG = True
MIDDLEWARE_CLASSES += (
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
@ -217,6 +223,7 @@ if DEBUG:
DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
}
LOGGING['loggers']['']['level'] = 'DEBUG'
try:
from gunicorn import version_info