zoukankan      html  css  js  c++  java
  • python logging rsyslog混合使用

    简介:

      企业规模大了,场景业务多了,日志不能再分散处理了。那么第一选择就是日志服务器,一台服务器就可以查看所有业务的日志,当然,也要有专门的数据库存储日志,专门的WEB浏览日志。

      作为linux的默认日志服务,rsyslog就是我们的第一选择了,它即是linux系统的日志服务,也可以配置开放端口作为中央日志服务器。

      rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。

      简单说,我们写python程序的时候,日志使用logging模块,是可以直接输出到远程的rsyslog中央日志服务器的。

    一:安装rsyslog

    我测试使用的fedora默认已经安装了,没安装的话,自己dnf apk ……根据自己的系统装一下。

    二:配置rsyslog

    rsyslog的配置文件为: /etc/rsyslog.conf

    编辑此文件即可。

    1.MODULES

    模块:可以理解为rsyslog的插件,配置打开这些插件,rsyslog就开启了这个功能,我比较关心的是tcp、udp端口监听记录功能

    # Provides UDP syslog reception
    # for parameters see http://www.rsyslog.com/doc/imudp.html
    #module(load="imudp") # needs to be done just once
    #input(type="imudp" port="514")

    # Provides TCP syslog reception
    # for parameters see http://www.rsyslog.com/doc/imtcp.html
    module(load="imtcp") # needs to be done just once
    input(type="imtcp" port="514")

    我取消了tcp端口514的注释,即监听514端口tcp协议。记录发向这里的日志内容。

    2.RULES

    规则:记录的保存规则吧。

    $template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log"
    *.* -?DynamicFile

    我在RULES下面增加了这个内容

    第一行是文件名模板,

    第二行是任何日志都保存到这个模板文件名中。

    3.数据库

    实验没到这里,候补

    三:python logging

    import logging
    import socket
    from logging import handlers
    
    #初始化日志
    logger = logging.getLogger("AppName")
    
    # 指定logger输出格式
    formatter = logging.Formatter('%(asctime)s %(levelname)-8s: (%(name)s)%(pathname)s %(message)s')
    
    #rsyslog日志处理器
    rsyslog_handler=handlers.SysLogHandler(address=('10.0.0.10', 514), socktype=socket.SOCK_STREAM)
    rsyslog_handler.setFormatter(formatter)
    
    # 为logger添加的日志处理器
    logger.addHandler(rsyslog_handler)
    
    # 指定日志的最低输出级别,默认为WARN级别
    logger.setLevel(logging.DEBUG)
    
    # 输出不同级别的log
    logger.debug('文件? ')
    logger.info('this is information')
    logger.warning('this is warning message')
    logger.error('this is error message')
    logger.fatal('this is fatal message, it is same as logger.critical')
    logger.critical('this is critical message')

    关键的是设置服务器地址,端口,还有协议,sysloghandler默认使用udp协议,

    socktype=socket.SOCK_STREAM    是定义tcp协议

    10.0.0.10    514 是定义rsyslog服务器地址和端口  只要能解析,填主机名,域名都可以。

    暂时到这里吧,凌晨1点多了。虽然还有数据库问题,储存格式,储存内容一些问题没有解决。

     

  • 相关阅读:
    TCP 重置攻击的工作原理
    Openshift 4.4 静态 IP 离线安装系列:初始安装
    跟我学SpringCloud | 终篇:文章汇总(持续更新)
    老司机带你玩转面试(4):Redis 高可用之哨兵模式
    老司机带你玩转面试(3):Redis 高可用之主从模式
    老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透
    Python 图像处理 OpenCV (14):图像金字塔
    老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化
    Python 图像处理 OpenCV (13): Scharr 算子和 LOG 算子边缘检测技术
    Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术
  • 原文地址:https://www.cnblogs.com/jackadam/p/14604577.html
Copyright © 2011-2022 走看看