美文网首页爬虫
爬虫:8.日志

爬虫:8.日志

作者: yuanquan521 | 来源:发表于2016-06-04 01:44 被阅读251次

日志

在任何一个完整的程序中,日志都是必不可少的一部分。日志的作用无需细说,下面是一个封装了发送日志到本地和syslog服务器的接口。

# -*- coding:utf-8 -*-

"""
File Name : 'log'.py
Description:
Author: 'chengwei'
Date: '2016/5/24' '16:24'
python: 2.7.10
"""
import logging
from logging.handlers import SysLogHandler
import time
import ConfigParser
import os
import codecs

def example():
    # 发送到远程syslogserver
    logger1 = to_syslog('local2', logging.INFO)
    for i in range(0, 20):
        time.sleep(0.5)
        msg = "abc %s" % i
        logger1.error(msg)
    # 存储日志到本地指定位置
    logger2 = local_log("test.log")
    for i in range(0, 20):
        time.sleep(1.1)
        msg = "abc %s" % i
        logger2.error(msg)

def local_log(logname, level=logging.INFO):
    """
    :param logname:表示存储路径和文件名
    :param level:表示日志输出级别logging.DEBUG,logging.INFO等等,默认为logging.INFO
    :return:logger
    """
    format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s[line:%(lineno)d] - %(message)s')
    handler = logging.FileHandler(logname)
    handler.setFormatter(format)

    logger = logging.getLogger()
    logger.addHandler(handler)
    logger.setLevel(level)
    return logger

def to_syslog(user, level=logging.INFO):
    """
    发送日志到syslog服务器
    :param user:表示自定义local0-7
    :param level:表示日志输出级别logging.DEBUG,logging.INFO等等,默认为logging.INFO
    :return:logger
    """
    sysloghost = init()
    format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s[line:%(lineno)d] - %(message)s')
    handler = SysLogHandler(address=(sysloghost, 514), facility=user)
    handler.setFormatter(format)
    logger = logging.getLogger()
    logger.addHandler(handler)
    logger.setLevel(level)
    return logger

def init(parasecname="LOG"):
    """
    从配置文件获取参数
    :param parasecname: 配置文件中节点名称
    :return:配置信息
    """
    cur_script_dir = os.path.split(os.path.realpath(__file__))[0]
    cfg_path = os.path.join(cur_script_dir, "db.conf")
    cfg_reder = ConfigParser.ConfigParser()
    secname = parasecname
    cfg_reder.readfp(codecs.open(cfg_path, "r", "utf_8"))
    sysloghost = cfg_reder.get(secname, "server")
    return sysloghost


if __name__ == '__main__':
    example()

相关文章

  • 爬虫:8.日志

    日志 在任何一个完整的程序中,日志都是必不可少的一部分。日志的作用无需细说,下面是一个封装了发送日志到本地和sys...

  • 8. 日志

    1. 日志 日志事务日志 transaction log中继日志 reley log错误日志 error ...

  • Python爬虫Scrapy框架:Scrapy框架的简单使用

    一.安装依赖 二.命令 crawl运行爬虫程序如果不打印日志 scrapy crawl 爬虫程序中的name --...

  • 带cookies登录

    首先创建一个项目 进入目录 创建爬虫 目录结构 编写代码图片.png 运行爬虫 信息太多! 修改日志等级图片.pn...

  • 数据是怎样传递

    推荐看这个文章(88条消息) 2021-11-03大数据学习日志——数据埋点+网络爬虫——爬虫基础知识_成长的小狮...

  • 【编号0003】Scrapy配套的部署工具和部署概念学习

    在一个Scrapy爬虫项目写好之后,启动和查看日志还不算麻烦,但是如果你的爬虫多,且启动方式及时间,比较有要求,那...

  • 浏览器怎样运行

    在这里分享一篇文章 (88条消息) 2021-11-03大数据学习日志——数据埋点+网络爬虫——爬虫基础知识_成长...

  • Nginx配置

    生产上检查Nginx日志,发现有python爬虫程序对日志进行分析,如何简单配置进行防御 1.配置文件 参考文档h...

  • scrapy(三) logging

    前言 使用 scrapy crawl XXX 启动爬虫的时候会产生很多启动日志信息,如下: 对于我们来说,我们并不...

  • 写一写python code review的一些通用准则

    1. PEP8、空行、缩进 2. 命名 3. 长度 4. 注释 5. 函数 6. 循环 7. 日志 8. 默认值 ...

网友评论

    本文标题:爬虫:8.日志

    本文链接:https://www.haomeiwen.com/subject/kqsldttx.html