logging模块配置笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: log文件的路径#判断在当前的目录下是否有一个logs文件夹。没有则创建log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'if not os.

log文件的路径

#判断在当前的目录下是否有一个logs文件夹。没有则创建
log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'
if not os.path.exists(log_dir):
    os.mkdir(log_dir)

设定log文件名

#在上述的文件夹生成web.log文件
log_path = os.path.join(log_dir, 'web.log')

dictConfig通用参数配置

version版本号
'version': 1.0#固定值1.0
formatters日志格式设置
 'format': formatter的格式,字符串,比如'%(levelname)s-%(message)s'
 'datefmt': 日期的输出格式,字符串,比如'%Y-%m-%d %H:%M:%S'
然后看下面一个配置
'formatters': {
        'detail': {#detail自定义一个格式名字
            'format''%(asctime)s - %(name)s - %(levelname)s - %(message)s',
            'datefmt'"%Y-%m-%d %H:%M:%S"
        },
        'simple': {#同detail自定义一个格式名字,这里定义另一种格式
            'format''%(name)s - %(levelname)s - %(message)s',
        },
    }
handlers日志格式设置
然后看下面一个配置
    'handlers': {
        'console': {#console是自定义的handlers名字
            'class''logging.StreamHandler',#构造handler使用的类,字符串,必须使用全路径
            'level''INFO',#级别
            'formatter''detail'#上面的detail格式
        },
        'file': {#file是自定义的handlers名字
            'class''logging.handlers.RotatingFileHandler',
            'maxBytes': 1024 * 1024 * 5,#每个日志文件最大5M,超过之后重新命名一个文件
            'backupCount': 10,#最多备份10个日志文件,
            'filename': log_path,#上面定义的log文件名
            'level''INFO',
            'formatter''detail',
            'encoding''utf-8',
        },
loggers

必须指定一个级别和handlers列表

    'loggers': {
        'crawler': {#crawler是自定义的日志对象名字
            'handlers': ['console''file'],#输出方式
            'level''DEBUG',#级别
        },
        'parser': {
            'handlers': ['file'],#输出方式
            'level''INFO',#级别
        }
    }

以上日志配置综合

log_config = {
    'version'1.0,
    'formatters': {
        'detail': {
            'format''%(asctime)s - %(name)s - %(levelname)s - %(message)s',
            'datefmt'"%Y-%m-%d %H:%M:%S"
        },
        'simple': {
            'format''%(name)s - %(levelname)s - %(message)s',
        },
    },
    'handlers': {
        'console': {
            'class''logging.StreamHandler',
            'level''INFO',
            'formatter''detail'
        },
        'file': {
            'class''logging.handlers.RotatingFileHandler',
            'maxBytes'1024 * 1024 * 5,
            'backupCount'10,
            'filename': log_path,
            'level''INFO',
            'formatter''detail',
            'encoding''utf-8',
        },
    },
    'loggers': {
        'crawler': {
            'handlers': ['console''file'],
            'level''DEBUG',
        },
        'parser': {
            'handlers': ['file'],
            'level''INFO',
        }
    }
}

创建日志对象使用

1.通过调用dictConfig(config)方法进行配置,config对象为一个dict

log_conf.dictConfig(log_config)

2.生成不同的日志对象

crawler = logging.getLogger('crawler')
parser = logging.getLogger('parser')

3.打印不同级别的log

常用的两种

crawler.error(错误信息)
crawler.info(字符串)
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4天前
|
消息中间件 数据库 开发者
Logging模块的高级用法
【6月更文挑战第21天】 - 支持DEBUG到CRITICAL的多级日志,便于控制信息输出。 - 可自定义日志格式,包含时间戳、级别等信息。 - 使用处理程序(如FileHandler、StreamHandler)将日志发送到不同目的地。 - 通过过滤器实现日志筛选,精细化控制记录。 - 利用配置文件管理日志设置,灵活可配置。 - 实现日志轮转和归档,管理日志文件大小和期限。 - 自定义处理程序适应特殊需求,如发送到数据库或消息队列。 - 异常处理中记录日志,增强调试能力。 - 遵循最佳实践,如选择合适日志级别、保持格式一致。 - 注意性能考量,如异步记录、批量处理和优化处理程序。
7 0
|
1月前
|
关系型数据库 MySQL Unix
logging模块介绍
logging模块介绍
|
8月前
|
Serverless Python
可以通过配置logging模块来记录日志
可以通过配置logging模块来记录日志
30 2
|
8月前
|
存储 Unix Python
logging模块
logging模块
31 0
|
API Python
Python 日志打印之logging.config.dictConfig使用总结
Python 日志打印之logging.config.dictConfig使用总结
144 0
|
Python
python日志处理——logging模块
python日志处理——logging模块
198 0
python日志处理——logging模块
|
JSON 数据格式 Python
python你必须熟悉的包:logging日志模块
在我们的python项目中,log日志是一个必不可缺的模块。我们需要将一些重要的运行数据保存下来,方便后期的问题排查。通常来说我们会将log保存至文件中,再进行后续的归档和查阅。python保存log用到最多的工具就是logging模块了,这里介绍下logging的使用吧。
887 0
|
程序员 Python
Python编程:logging模块的简单使用
Python编程:logging模块的简单使用
127 0