6

公式の django ドキュメントを読んでも、私はそれについてあまり理解していません。 https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging

settings.py のDEBUGがTrueに設定されている場合もログを有効にしたいと思います。エラーをファイルに記録したいと思います。

どうやってするか?

これらは、現在私が持っているロギングのデフォルトの django 設定です。

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,
        },
    }
}

PS: LAN でリモート アクセスする開発マシンを使用しているため、開発環境で Apache + mod_wsgi を使用しています。これは、django 開発サーバーを使用しておらず、コンソール ログ メッセージが表示されないことを意味します。

4

2 に答える 2

4

Django ロギングは、設定しない限り、どちらの DEBUG モードでもデフォルトでは無効になりません。

handlersあなたの部分に以下を追加してくださいLOGGING

'file':
        {
            'level':
                'INFO',
            'class':
                'logging.FileHandler',
            'formatter':
                'verbose',
            'filename':
                'myapp.log'

        }

myapp.logプロジェクトルートのファイルにログが記録されます。完全なパスを指定できます。

そして、Logging dict に formatters フィールドを追加します。

'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format':
                '%(levelname)s %(message)s'
        },
    },
于 2012-10-11T14:01:21.083 に答える
1

これは、 django 1.3+ の Simple Log to File example に触発された作業設定の例です。

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'
        },
        'logfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': SITE_ROOT + "/debug.log",
            'maxBytes': 50000,
            'backupCount': 2,
            'formatter': 'custom',
        },
    },
    'loggers': {
        #'django': {
        #    'handlers':['logfile'],
        #    'level':'DEBUG',
        #    'propagate': True,
        #},
        #'django.request': {
        #    'handlers': ['mail_admins', 'logfile'],
        #    'level': 'DEBUG',
        #    'propagate': True,
        #},
        'nodeshot.core.mailing': {
            'handlers': ['logfile'],
            'level': 'DEBUG',
        },
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
        'custom': {
            'format': '%(levelname)s %(asctime)s\n%(message)s'
        },
    },
}
于 2012-10-11T16:06:53.300 に答える