Python启动脚本使用STDOUT作为输出,使用init.d方法

2024-10-01 11:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我的环境是嵌入式arm显示器上的Debian Jesse。在

我正在使用bash脚本使用init.d方法自动启动我的应用程序。它启动第二个python脚本作为守护进程,在启动和重新启动时处理我的应用程序。在

据我所知,这是一个后台进程,它将STDOUT和STDIN从python脚本中断开。在

这个系统和应用程序只有一个目的,所以用后台进程的输出对控制台进行垃圾邮件处理不仅不是问题,而且是需要的。有了这些输出,我可以很容易地通过ssh或串行控制台进入显示并查看所有的实时调试输出或异常。在

我已经研究了强制进程到前台的可能方法,或者将输出重定向到STDOUT,但是在脚本启动时运行时没有找到任何明确的答案。在

我对一个文件的记录运行得很好,否则应用程序在它所处的状态下运行得很好。目前,当我需要调试时,我停止应用程序并手动运行它以获得所有输出。在

我考虑过使用套接字重定向应用程序的输出,然后运行一个正在监听的单独脚本将打印到控制台。。。但这似乎不太理想,而且可能存在更好的解决方案。在

有什么方法可以做到这一点还是我应该接受它。在

编辑1(其他详细信息)

因为我对多个进程使用多个日志,所以我创建了一个logger类。流处理程序使用默认值系统标准. 在

import logging
import logging.handlers

class LoggerSetup(object):

    def __init__(self, logName, logFileNameAndPath, logSizeBytes, logFileCount):

        log = logging.getLogger(logName)
        log.setLevel(logging.INFO)

        formatter = logging.Formatter('%(asctime)s - %(levelname)s - ' + logName + ' - %(message)s',datefmt="%m-%d %H:%M:%S")
        # Add the log message handler to the logger

        if(logFileCount > 0):

            fileHandler = logging.handlers.RotatingFileHandler(logFileNameAndPath, maxBytes=logSizeBytes, backupCount=logFileCount)
            log.addHandler(fileHandler)
            fileHandler.setFormatter(formatter)

        consoleHandler = logging.StreamHandler()
        log.addHandler(consoleHandler)
        consoleHandler.setFormatter(formatter)

        log.info(logName + ' initialized')

下面是启动脚本启动时的更多参考。然后它运行我的python运行.py它处理其余的启动过程。在

^{pr2}$

Tags: 方法脚本log应用程序进程initformatterlogging