zoukankan      html  css  js  c++  java
  • 调用subprocess 使用logging打印日志

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Henry  17607168727@163.com
    
    import sys
    import logging
    from logging.handlers import TimedRotatingFileHandler
    import os
    from subprocess import Popen, PIPE, STDOUT
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    
    LOG_FILE_NAME = 'send_snmp_trap.log'
    logger = logging.getLogger('SenSNMPTrap.py')
    logger.setLevel(level=logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(process)d - %(levelname)s - %(message)s')
    LOG_PATH = os.path.join('/tmp', LOG_FILE_NAME)
    
    # 每天午夜更新日志文件
    handler = TimedRotatingFileHandler(LOG_PATH, when='midnight', backupCount=3, )
    handler.setLevel(logging.INFO)
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    console.setFormatter(formatter)
    # 输出到屏幕
    logger.addHandler(console)
    
    
    def log_subprocess_output(pipe):
        for line in iter(pipe.readline, b''):  # b'
    '-separated lines
            logger.info('got line from subprocess: %r', line)
    
    
    def run_command(command_line_args):
        process = Popen(command_line_args, stdout=PIPE, stderr=STDOUT)
        with process.stdout:
            log_subprocess_output(process.stdout)
        exitcode = process.wait()  # 0 means success
        if exitcode == 0:
            logger.info('success')
        else:
            logger.error("failed")
    
    
    run_command(command_line_args=['ls', '/tp/'])
    
  • 相关阅读:
    java 标准异常
    java 重新抛出异常
    java 异常链
    java 轨迹栈
    mysql死锁-非主键索引更新引起的死锁
    数据库事务
    JMS学习笔记(一)
    log4j中将SocketAppender将日志内容发送到远程服务器
    Kubernetes之kubectl常用命令
    java代理与动态代理的学习
  • 原文地址:https://www.cnblogs.com/randomlee/p/11245794.html
Copyright © 2011-2022 走看看