zoukankan      html  css  js  c++  java
  • python3练习-发送IP地址到邮箱(使用日志)

    看了下python下的logging模块,和java的log4j差不多,把之前的代码改为使用log配置的方式实现功能(需求和之前的相同,地址"http://www.cnblogs.com/GYoungBean/p/6510508.html")
    #! usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    import socket
    import threading
    import logging.config
    
    now_ip = ""
    
    def _get_ip_win():
        ips = socket.gethostbyname_ex(socket.gethostname())
        for s in ips[2]:
            if s.startswith('10'):
                return s
    
    def checkIP(start_ip):
        global now_ip
        if start_ip != now_ip:
            logger_mail.error('Send Mail:the old IP is:%s.Now,the new IP is:%s' % (now_ip,start_ip))
            now_ip = start_ip
        else:
            logger_root.info('IP address not change,the old IP is:%s---the new IP is:%s' % (start_ip, now_ip))
        new_ip = _get_ip_win()
        t = threading.Timer(3600.0, checkIP,(new_ip,))
        t.start()
    
    if __name__ == '__main__':
        logging.config.fileConfig("./logging.conf")
        logger_mail = logging.getLogger('mail')
        logger_root = logging.getLogger('root')
        start_ip,now_ip = _get_ip_win(),_get_ip_win()
        checkIP(start_ip)
    日志配置如下(logging.conf):
    [loggers]
    keys=root,mail
    
    [handlers]
    keys=consoleHandler,fileHandler,mailHandler
    
    [formatters]
    keys=simpleFormatter
    
    [formatter_simpleFormatter]
    format=%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)s]
    datefmt=
    
    
    [logger_root]
    level=INFO
    handlers=consoleHandler,fileHandler
    
    [logger_mail]
    level=ERROR
    handlers=mailHandler,fileHandler
    qualname=mail
    propagate=0
    
    [handler_consoleHandler]
    class=StreamHandler
    level=INFO
    formatter=simpleFormatter
    args=(sys.stdout,)
    
    [handler_fileHandler]
    class=FileHandler
    level=INFO
    formatter=simpleFormatter
    args=('./ipchange.log', 'a')
    
    [handler_mailHandler]
    class=handlers.SMTPHandler
    level=ERROR
    formatter=simpleFormatter
    args=(('xxx',25), 'xxx', ['xxx','xxx'], 'NOTICE!!!--PC IP CHANGED', ('xxx', 'xxx'))
  • 相关阅读:
    2019-10-28-开源项目
    2018-8-10-win10-uwp-MetroLog-入门
    2018-5-20-C#-BBcode-转-Markdown
    2018-8-10-win10-UWP-序列化
    2018-2-13-win10-uwp-BadgeLogo-颜色
    2019-1-25-WPF-ListBox-的选择
    2019-1-5-Windows-的-Pen-协议
    android studio打印
    Java 基本数据类型
    FreeRTOS 任务通知模拟计数型信号量
  • 原文地址:https://www.cnblogs.com/GYoungBean/p/6566541.html
Copyright © 2011-2022 走看看