Django Céleri Tâche De Journalisation
J'ai le programme d'installation de Céleri dans un projet Django sur lequel je travaille. Je voudrais séparer l'enregistrement de céleri tâches vs le reste de céleri journaux (celerycam, celerybeat, etc).
Basé sur le Céleri documentation (http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging) il me semble que je devrais être en mesure de définir un enregistreur de Django pour 'le céleri.la tâche qui doit le faire. Cependant, quand je fais cela, rien ne s'affiche dans les journaux. Tout ce qui ne présentent que si je créer un générique de 'le céleri' enregistreur, ce qui implique que cela peut être quelque chose à voir avec le nom de l'enregistreur.
Ce qui me manque ici? Est-il un moyen pour faire ce travail, ou doivent tous céleri journaux vont ensemble?
Pour ce que ça vaut, j'ai mis CELERYD_HIJACK_ROOT_LOGGER = False.
Mon journalisation de la configuration dans settings.py:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'formatters': {
'standard': {
'format': '%(asctime)s %(levelname)s [%(name)s: %(lineno)s] -- %(message)s',
'datefmt': '%m-%d-%Y %H:%M:%S'
},
},
'handlers': {
'logfile': {
'level': 'INFO',
'filters': None,
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/vagrant/logs/logfile.log',
'maxBytes': 1024*1024*5,
'backupCount': 3,
'formatter': 'standard'
},
'debug_logfile': {
'level': 'DEBUG',
'filters': None,
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/vagrant/logs/debug_logfile.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter': 'standard'
},
'default_logger': {
'level': 'WARNING',
'filters': None,
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/vagrant/logs/default.log',
'maxBytes': 1024*1024*5,
'backupCount': 2,
'formatter': 'standard'
},
'celery_logger': {
'level': 'DEBUG',
'filters': None,
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/vagrant/logs/celery.log',
'maxBytes': 1024*1024*5,
'backupCount': 2,
'formatter': 'standard'
},
'celery_task_logger': {
'level': 'DEBUG',
'filters': None,
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/vagrant/logs/celery_tasks.log',
'maxBytes': 1024*1024*5,
'backupCount': 2,
'formatter': 'standard'
},
},
'loggers': {
'': {
'handlers': ['default_logger'],
'level': 'WARNING',
'propagate': True,
},
'django': {
'handlers': ['logfile'],
'level': 'INFO',
'propagate': True,
},
'feedmanager': {
'handlers': ['logfile', 'debug_logfile'],
'level': 'DEBUG',
'propagate': True,
},
'recipemanager': {
'handlers': ['logfile', 'debug_logfile'],
'level': 'DEBUG',
'propagate': True,
},
'menumanager': {
'handlers': ['logfile', 'debug_logfile'],
'level': 'DEBUG',
'propagate': True,
},
'celery.task': {
'handlers': ['celery_task_logger'],
'level': 'DEBUG',
'propagate': True,
},
'celery': {
'handlers': ['celery_logger'],
'level': 'DEBUG',
'propagate': True,
},
}
}
Merci, pas sûr, je me suivez bien. J'ai un enregistreur de céleri.tâche, et ont essayé de céleri.tâches pour le même effet.
OriginalL'auteur aravenel | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
je devine dans vos tâches de votre faire
si votre faire cela, alors votre enregistreur nom sera le nom du module, donc si votre tâche est dans un tasks.py fichier dans une application appelée MyApp votre enregistreur sera nommé 'MyApp.les tâches "et vous auriez à créer le logger" MyApp.les tâches " dans vos paramètres.
Vous pouvez simplement mettre une autre chaîne à la place de __nom__ pour toutes les tâches pour se connecter à l'enregistreur de même si vous les avez tous plus de place. exemple: 'le céleri.la tâche
oh, et assurez-vous que votre travailleur loglevel est ce que vous voulez qu'il soit
Yep, peut confirmer cela fonctionne, merci! Encore confus pourquoi le principal "céleri" de l'enregistreur prend, mais je peux vivre avec cela.
OriginalL'auteur toad013