Log模块的四⼤大组件
Loggers
提供应⽤用程序代码直接使⽤用的接⼝
Handlers
⽤用于将⽇日志记录发送到指定的⽬目的位置
Filters
提供更更细粒度的⽇日志过滤功能,⽤用于决定哪些⽇日志记录将会被输出(其它的⽇日 志记录将会被忽略略)
Formatters
⽤用于控制⽇日志信息的最终输出格式
%(levelno)s:打印⽇日志级别的数值
%(levelname)s:打印⽇日志级别的名称
%(pathname)s:打印当前执⾏行行程序的路路径,其实就是sys.argv[0]
%(filename)s:打印当前执⾏行行程序名
%(funcName)s:打印⽇日志的当前函数
%(lineno)d:打印⽇日志的当前⾏行行号
%(asctime)s:打印⽇日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印⽇日志信息
应用文件tests.py
import logging logger = logging.getLogger(__name__) logger.setLevel(level = logging.INFO)
handler = logging.FileHandler(“log.txt”)
formatter = logging.Formatter('%(asctime)s - %(name)s - % (levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
配置settings
ADMINS = ( ('tom','*******@163.com'), )
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
SERVER_EMAIL=EMAIL_HOST_USER
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': {
'standard': {
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:% (lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} },
'filters': {
'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse', } },
'handlers': { python学院
'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'mail_admins': {
'level': 'ERROR',
'class':'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false'], }, 'debug': { 'level': 'DEBUG', 'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, "log", 'debug.log'),
'maxBytes': 1024 * 1024 * 5,
'backupCount': 5,
'formatter': 'standard',
'console':{ 'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard', }, },
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False },
'django.request': {
'handlers': ['debug','mail_admins'],
'level': 'ERROR',
'propagate': True,
'django.security.DisallowedHost': { 'handlers': ['null'],
'propagate': False,
},
}
}