settings.py
import logging
import django.utils.log
import logging.handlers
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
},
},
#formatters表示输出的形式,asctime是输出的时间,默认这是形式‘2003-07-08 16:49:45,896’(逗号后面的数字是时间的毫秒部分)。
#levelnam消息的文本日志记录级别('DEBUG', 'INFO', 'WARNING','ERROR', 'CRITICAL').
#name用于记录调用的记录器的名称。
#threadname线程名称(如果可用)threadd线程ID(如果可用)
#lineno发出日志记录调用的源行号(如果可用)
#disable_existing_loggers中的键如果设置为True(这是默认的)那么来自默认配置的所有记录器都将被禁用。禁用的记录器与已删除的不一样;记录器仍然存在,但将默默地丢弃任何记录到它的内容,甚至不会将条目传播到父记录器。
'filters': {
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(__file__)+'/logs/','all.log'), #或者直接写路径:'c:\logs\all.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\request.log''
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'scprits_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\script.log'
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
},
'loggers': {
'django': {
'handlers': ['default','console'],
'level': 'DEBUG',
'propagate': False
},
'XieYin.app':{
'handlers': ['default','console'],
'level': 'DEBUG',
'propagate': True
},
'django.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False
},
'scripts': { # 脚本专用日志
'handlers': ['scprits_handler'],
'level': 'INFO',
'propagate': False
},
}
}
views.py
# import the logging library
import logging
# Get an instance of a logger
logger = logging.getLogger(__name__)
#logger = logging.getLogger(__name__) # 这里用__name__通用,自动检测
#记录器的名称通常是__name__包含记录器的python模块的名称。可以自己进行定义,但是一定要在安装了模块的包里
def my_view(request, arg1, arg):
...
if bad_mojo:
# Log an error message
logger.error('Something went wrong!')
日志有几个级别,我这里是error
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()