Ejemplo n.º 1
0
def init_logger():
    # 创建 scrapy 日志记录器
    logger = logging.getLogger('scrapy')
    logger.setLevel(logging.INFO)

    # 设置日志的格式化对象
    # 要求收集日志的时间、等级名称、发生所在的函数名及行号
    fmt_str = '%(asctime)s %(levelname)s %(funcName)s %(lineno)s: %(message)s'
    formatter = Formatter(fmt=fmt_str, datefmt='%Y-%m-%d %H:%M:%S')

    handler1 = StreamHandler()
    handler1.setLevel(logging.INFO)
    handler1.setFormatter(formatter)

    handler2 = FileHandler('errors.log', encoding='utf-8')
    handler2.setLevel(logging.ERROR)
    handler2.setFormatter(formatter)

    handler3 = HTTPHandler(host='10.12.152.218:5000',
                           url='/log/',
                           method='POST')
    # handler3.setFormatter(formatter)
    handler3.setLevel(logging.ERROR)

    # 将处理器添加到日志记录器中
    logger.addHandler(handler1)
    logger.addHandler(handler2)
    logger.addHandler(handler3)
Ejemplo n.º 2
0
    def test4(self):
        # formatter、handler、logger 之间关系?
        # handler 对象可以添加formatter
        # logger 可以添加多个 handler, 如果没有handler,默认会添加 StreamHandler

        # 常用的Handler有哪些
        #  1) StreamHandler -> 控制台打印输出的处理器
        #  2) FileHandler -> 日志文件输出的处理器
        #  3)HttpHandler  -> 网络上传日志的处理器

        logger = logging.getLogger('disen')

        # user_id 是自定义格式变量
        log_format_str = '< %(user_id)s >[ %(asctime)s ]-%(levelname)s: %(message)s'
        log_format_date = '%Y-%m-%d %H:%M:%S'

        # 实例化handler - 标准输出的
        handler1 = logging.StreamHandler()

        # 设置handler的日志等级、格式
        handler1.setLevel(logging.INFO)
        handler1.setFormatter(
            logging.Formatter(fmt=log_format_str, datefmt=log_format_date))

        logger.addHandler(handler1)

        handler2 = logging.FileHandler('handler.log')
        handler2.setFormatter(
            logging.Formatter(fmt=log_format_str, datefmt=log_format_date))
        handler2.setLevel(logging.WARN)  # 文件处理器只记录 警告信息

        logger.addHandler(handler2)

        # 创建上传日志的处理器
        # 上传日志信息中的所有信息
        httpHandler = HTTPHandler(host='10.12.155.80:5000',
                                  url='/upload_log/',
                                  method='POST')
        httpHandler.setLevel(logging.ERROR)

        logger.addHandler(httpHandler)

        # 1. 检查每个消息的等级,再判断当前日志记录器是否处理
        # 2. 在日志的记录器中 获取它的所有处理器handler
        # 3. 根据消息的等级,分别由不同的处理器处理消息。

        extra_info = {'user_id': '1000001'}

        logger.info('hi, info', extra=extra_info)
        logger.warning('hi, warning', extra=extra_info)
        logger.error('hi, error', extra=extra_info)
        logger.critical('hi, critical', extra=extra_info)
Ejemplo n.º 3
0
def config_log():
    fmt = Formatter(fmt='%(asctime)s %(name)s %(levelname)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')

    io_handler = StreamHandler()
    io_handler.setLevel(logging.DEBUG)
    io_handler.setFormatter(fmt)

    file_handler = FileHandler('edu_logs.log')
    file_handler.setLevel(logging.WARN)
    file_handler.setFormatter(fmt)

    http_handler = HTTPHandler(host='localhost:5000',
                               url='/log',
                               method='POST')
    http_handler.setLevel(logging.ERROR)
    http_handler.setFormatter(fmt)  # 上传的数据不需要formatter

    logger.setLevel(logging.DEBUG)
    logger.addHandler(io_handler)
    logger.addHandler(file_handler)
    logger.addHandler(http_handler)
Ejemplo n.º 4
0
Archivo: tests.py Proyecto: Lizrong/CM
    def test_log(self):
        logger = logging.getLogger()

        fileHandler = TimedRotatingFileHandler('logs/content.log')
        fileHandler.setLevel(
            logging.INFO
        )  # NOTSET -> DEBUG -> INFO -> WARNING -> ERROR -> FATAL

        formatter = Formatter('%(asctime)s  %(levelname)s: %(message)s',
                              datefmt='%Y-%m-%d %H:%M:%S')

        fileHandler.setFormatter(formatter)

        iohandler = StreamHandler()
        iohandler.setLevel(logging.DEBUG)

        logger.addHandler(fileHandler)
        logger.addHandler(iohandler)

        # 将日志上传到日志服务器
        # host 服务器的ip和port
        # url  请求路径,以 / 开始
        # method 默认 为GET
        httpHandler = HTTPHandler(host='127.0.0.1:5000',
                                  url='/upload_log',
                                  method='POST')

        httpHandler.setFormatter(formatter)

        # 只有error 的信息才会上传到日志服务器
        httpHandler.setLevel(logging.ERROR)
        logger.addHandler(httpHandler)

        logger.setLevel(logging.DEBUG)

        logger.info('this is a test log python file!')
        logger.error('this is error msg for python file!')
        logger.debug('this is dubug msg !')  # this msg is hiddern!
Ejemplo n.º 5
0
# 1.1 设置记录器的日志等级(FATAL 50、ERROR 40、WARN 30, INFO 20, DEBUG 10, NOSET 0)
# 注: 等级高的, 不会获取等级低的日志
logger.setLevel(logging.INFO)

# 2. 设置日志的格式
fmt_str = '[ %(asctime)s %(levelname)s ] %(message)s'
format = logging.Formatter(fmt=fmt_str, datefmt='%Y-%m-%d %H:%M:%S')

# 3. 设置日志的处理器 Handler
# - StreamHandler 控制台输出流
# - FileHandler   日志文件输出
# - HttpHandler   网络请求的日志上传处理器
handler = logging.StreamHandler()
file_handler = TimedRotatingFileHandler('test.log')  # 按时间分隔的日志文件
file_handler.setLevel(logging.WARN)  # 设置处理的日志等级

http_handler = HTTPHandler(host='10.35.166.35:5000',
                           url='/upload_log/',
                           method='POST')
http_handler.setLevel(logging.ERROR)

logger.addHandler(handler)
logger.addHandler(file_handler)
logger.addHandler(http_handler)

# 程序中发出不同等级的日志的消息
logger.info('第一个普通消息的测试')
logger.debug('日志等级低的消息不会被处理')
logger.warning('警告日志会被写入文件中,同时控制台显示 ')
logger.critical('严重错误日志信息,被上传到日志服务器, 同时控制台显示')
Ejemplo n.º 6
0
def addHttpLog(url):
    http_handler = HTTPHandler(url, "/data/log", method='POST')
    http_handler.setLevel(logging.ERROR)
    logger.addHandler(http_handler)
Ejemplo n.º 7
0
                       fromaddr='*****@*****.**',
                       toaddrs='*****@*****.**',
                       subject='日志邮箱通知')

# 配置邮件验证用户和口令(或授权码)
handler3.username = '******'
handler3.password = '******'  # QQ邮箱发件时验证的“授权码”
handler3.setLevel(logging.FATAL)

# 创建上传日志请求的处理器HTTPHandler
# 上传日志的接口: http://10.35.162.97:5000/log/
# 接口的方法: post
# 响应的数据是json
handler4 = HTTPHandler(host='10.35.162.97:5000',
                       url='/log/', method='POST')
handler4.setLevel(logging.INFO)


# 创建格式化对象 , 并添加到处理器
formatter = logging.Formatter('[ <%(asctime)s> %(name)s %(levelname)s ] %(message)s')
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)
handler3.setFormatter(formatter)
handler4.setFormatter(formatter)  # 无效的,默认情况下将所有的日志信息上传到服务器

# 将处理器添加到日志记录器
logger.addHandler(handler1)
logger.addHandler(handler2)
# logger.addHandler(handler3)
logger.addHandler(handler4)