文档章节

python中logging模块的使用

klaus丶
 klaus丶
发布于 2016/07/11 18:05
字数 163
阅读 29
收藏 4
#coding=utf8
import logging, os, sys, time
from logging import Logger
from logging.handlers import TimedRotatingFileHandler

def script_path():
    path = os.path.realpath(sys.argv[0])
    if os.path.isfile(path):
     path = os.path.dirname(path)
    return os.path.abspath(path)

def init_logger(logger_name):
    if logger_name not in Logger.manager.loggerDict:
        logger = logging.getLogger(logger_name)
        logger.setLevel(logging.DEBUG)
        # handler all
        log_path = os.path.join(script_path(),'logs')
        if not os.path.exists(log_path):
            os.makedirs(log_path)
        log_file = os.path.join(log_path,'all.log')
        handler = TimedRotatingFileHandler(log_file, when='midnight',backupCount=7)
        datefmt = '%Y-%m-%d %H:%M:%S'
        format_str = '[%(asctime)s]: %(name)s %(levelname)s %(lineno)s %(message)s'
        formatter = logging.Formatter(format_str, datefmt)
        handler.setFormatter(formatter)
        handler.setLevel(logging.INFO)
        logger.addHandler(handler)
        # handler error
        logerr_file = os.path.join(log_path,'error.log')
        handler = TimedRotatingFileHandler(logerr_file, when='midnight',backupCount=7)
        datefmt = '%Y-%m-%d %H:%M:%S'
        format_str = '[%(asctime)s]: %(name)s %(levelname)s %(lineno)s %(message)s'
        formatter = logging.Formatter(format_str, datefmt)
        handler.setFormatter(formatter)
        handler.setLevel(logging.ERROR)
        logger.addHandler(handler)


    logger = logging.getLogger(logger_name)
    return logger

logger = init_logger('cash')

if __name__ == '__main__':
    logger = init_logger('cash')
    logger.error('test-error')
    logger.info('test-info')
    logger.warn('test-warn')

 

© 著作权归作者所有

共有 人打赏支持
klaus丶
粉丝 0
博文 47
码字总数 10421
作品 0
海淀
程序员
私信 提问
使用Logging Handler自动上传Python程序日志到日志服务

想要日志上云,又不想修改程序代码? 或者不希望进行相对复杂的客户端部署?那么您需要使用Logging Handler,现在Python程序也支持了! 概述 使用Python SDK提供的Log Handler可以实现每一条P...

成喆
04/13
0
0
python 日志模块 logging 详解

Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j 类似。 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最...

大数据之路
2013/05/01
0
6
Python第三章模块-张明阳-专题视频课程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a2011480169/article/details/83580545 Python第三章模块—142人已学习 课程介绍 介绍Python在项目当中常用的...

安静的技术控
04/20
0
0
python学习——基础(八)

python 内置了一套try...except...finally...的错误处理机制; try: except ZeroDivisionError, e: finally: 结果:tryexcept: integer division or modulo by zerofinally finally语句块是一......

随性_
2015/10/26
0
0
Python--(异常与日志 随机数与模块 推导)

异常与日志 随机数与模块 推导 一、自定义异常 (通过自定义来编辑报错提示信息,代码报错以后会在输出框打印出来) 例: 四、模块 代码格式import sys(必须先引入) print(sys.path)路径。打印后...

xjtuhit
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手写一个重试机制程序(使用Callable)

java.util.concurrent.Callable<V>接口可以实现多线程,同时还能实现一个简易重试机制。 查看Callable接口源码可知,它内部的call()方法带返回值,同时抛出了异常。 public interface Cal...

哥本哈根的小哥
23分钟前
0
0
能否通过反射修改被 final 修饰的成员变量?

一、背景 日常磨刀 二、阅前须知知识点: 当final修饰的成员变量在定义的时候初始化值,反射就不能动态修改它的值了。 当final修饰的成员变量在定义的时候没有初始化值,就还能通过反射来动态...

jack__0023
41分钟前
0
0
方之熙博士被任命为RISC-V基金会中国顾问委员会主席,加速RISC-V ISA在中国的应用

中国顾问委员会将就RISC-V基金会的教育和应用推广战略提供指导 今天在中国乌镇举行的世界互联网大会(World Internet Conference)上,RISC-V基金会(RISC-V Foundation)宣布,半导体行业资深人...

whoisliang
55分钟前
1
0
为了用户体验,不要做浏览器兼容

读者看到这篇文章的标题也许会感到奇怪,按照通常的经验来说,为了用户体验应该做浏览器兼容,以便让不同的浏览器用户都能有好的体验,从而增加网站的流量,但是我认为做浏览器兼容属于同样的...

Bob2100
55分钟前
1
0
分布式定时任务架构 (二) xxl-job二次开发实践

4个月前,公司有任务调度的需求,需要一周内完成,时间非常紧。 需求有三点: web界面编辑cron表达式,启动,停止任务 接入公司的rpc成本较低,公司有自研的rpc,研发人员希望共用同一套注解 ...

勇哥和你一起学技术
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部