LOGGING = { ‘version‘: 1, ‘disable_existing_loggers‘: False, # 指定输出的格式,被handler使用。 ‘formatters‘: { ‘standard‘: { ‘format‘: ‘%(asctime)s %(levelname)-8s %(message)s‘ }, ‘detail‘: { ‘format‘: ‘%(asctime)s %(levelname)-8s %(pathname)s[line:%(lineno)d] %(message)s‘ }, }, # 指定输出到控制台还是文件中,以及输出的方式。被logger引用。 ‘handlers‘: { # 输出到控制台 ‘console‘: { ‘level‘: ‘INFO‘, ‘class‘: ‘logging.StreamHandler‘, ‘formatter‘: ‘standard‘, }, ‘file‘: { ‘level‘: ‘INFO‘, ‘class‘: ‘logging.handlers.RotatingFileHandler‘, # 存放的日志的位置 ‘filename‘: r‘F:\python\myorm\log‘, ‘maxBytes‘: 1024 * 1024 * 5, # 5 MB ‘backupCount‘: 100, ‘formatter‘: ‘detail‘, }, ‘web_file‘: { ‘level‘: ‘INFO‘, ‘class‘: ‘logging.handlers.RotatingFileHandler‘, # 日志的位置 ‘filename‘: r‘F:\python\myorm\web\web.log‘, ‘maxBytes‘: 1024 * 1024 * 5, # 5 MB ‘backupCount‘: 100, ‘formatter‘: ‘detail‘, }, ‘rbac_file‘: { ‘level‘: ‘INFO‘, ‘class‘: ‘logging.handlers.RotatingFileHandler‘, # 日志的位置 ‘filename‘: r‘F:\python\myorm\rbac\rbac.log‘, ‘maxBytes‘: 1024 * 1024 * 5, # 5 MB ‘backupCount‘: 100, ‘formatter‘: ‘detail‘, }, }, # 指定django中的每个模块使用哪个handlers。以及日志输出的级别。 ‘loggers‘: { ‘django‘: { ‘handlers‘: [‘console‘, ‘file‘], ‘level‘: ‘INFO‘, ‘propagate‘: True, }, # 自定义模块日志 ‘users‘: { ‘handlers‘: [‘console‘, ‘file‘], ‘level‘: ‘DEBUG‘, ‘propagate‘: True, }, ‘common‘: { # 使用哪一个 handlers ‘handlers‘: [‘console‘, ‘file‘], ‘level‘: ‘DEBUG‘, ‘propagate‘: True, }, # web 应用的名字 ‘web‘: { ‘handlers‘: [‘console‘, ‘web_file‘], ‘level‘: ‘INFO‘, ‘propagate‘: True, }, ‘rbac‘: { ‘handlers‘: [‘console‘, ‘rbac_file‘], ‘level‘: ‘INFO‘, ‘propagate‘: True, }, }, }
此配置分成三个部分:
- formatters: 指定输出的格式,被handler使用。
- handlers: 指定输出到控制台还是文件中,以及输出的方式。被logger引用。
- loggers: 指定django中的每个模块使用哪个handlers。以及日志输出的级别。
注意:日志的输出级别是由loggers中的每个模块中level选项定义。如果没有配置,那么默认为warning级别。
然后在每个模块的views.py中,通过下面代码使用:
import logging
logger = logging.getLogger(__name__)
具体的输出部分代码为:
logger.debug("hello, world")
logger.info("hello, world")
logger.error("hello, world")
日志记录级别 Level
logging模块的重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字
级别 | 值 | 描述 |
---|---|---|
CRITICAL | 50 | 关键错误/消息 |
ERROR | 40 | 错误 |
WARNING | 30 | 警告消息 |
INFO | 20 | 通知消息 |
DEBUG | 10 | 调试 |
NOTSET | 0 | 无级别 |
。
记录器 Logger
记录器负责管理日志消息的默认行为,包括日志记录级别、输出目标位置、消息格式以及其它基本细节。
关键字参数:
- filename 将日志消息附加到指定文件名的文件
- filemode 指定用于打开文件模式
- format 用于生成日志消息的格式字符串
- datefmt 用于输出日期和时间的格式字符串
- level 设置记录器的级别
- stream 提供打开的文件,用于把日志消息发送到文件。
日志消息格式 format
- %(name)s 记录器的名称
- %(levelno)s 数字形式的日志记录级别
- %(levelname)s 日志记录级别的文本名称
- %(filename)s 执行日志记录调用的源文件的文件名称
- %(pathname)s 执行日志记录调用的源文件的路径名称
- %(funcName)s 执行日志记录调用的函数名称
- %(module)s 执行日志记录调用的模块名称
- %(lineno)s 执行日志记录调用的行号
- %(created)s 执行日志记录的时间
- %(asctime)s 日期和时间
- %(msecs)s 毫秒部分
- %(thread)d 线程ID
- %(threadName)s 线程名称
- %(process)d 进程ID
- %(message)s 记录的消息
内置处理器 handler
logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别。
- handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。
- handlers.FileHandler(filename):将日志消息写入文件filename。
- handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。
- handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。
由于内置处理器还有很多,如果想更深入了解。可以查看官方手册。
现在大概了解了logging的使用方法,现在可以结合前面的例子使用。
原文地址:https://www.cnblogs.com/lulin9501/p/11086952.html
时间: 2024-10-10 07:57:45