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点多了。虽然还有数据库问题,储存格式,储存内容一些问题没有解决。

     

  • 相关阅读:
    记一道乘法&加法线段树(模版题)
    2021CCPC网络赛(重赛)题解
    Codeforces Round #747 (Div. 2)题解
    F. Mattress Run 题解
    Codeforces Round #744 (Div. 3) G题题解
    AtCoder Beginner Contest 220部分题(G,H)题解
    Educational Codeforces Round 114 (Rated for Div. 2)题解
    Codeforces Global Round 16题解
    Educational Codeforces Round 113 (Rated for Div. 2)题解
    AtCoder Beginner Contest 182 F
  • 原文地址:https://www.cnblogs.com/jackadam/p/14604577.html
Copyright © 2011-2022 走看看