Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python';s日志记录模块未记录到日志文件_Python - Fatal编程技术网

python';s日志记录模块未记录到日志文件

python';s日志记录模块未记录到日志文件,python,Python,我正在尝试使用python的logger模块在控制台和日志中记录信息,它运行良好。我希望在机器star tup期间调用该脚本,并因此从rc.local调用我的脚本 我的脚本在启动过程中被调用,但问题是,当时只有控制台日志工作。没有记录到文件。任何关于问题的线索 它是否与syslog守护进程有关 import time import logging import datetime global logger global LOG_FILE def initialize(): logge

我正在尝试使用python的logger模块在控制台和日志中记录信息,它运行良好。我希望在机器star tup期间调用该脚本,并因此从rc.local调用我的脚本

我的脚本在启动过程中被调用,但问题是,当时只有控制台日志工作。没有记录到文件。任何关于问题的线索

它是否与syslog守护进程有关

import time
import logging
import datetime

global logger
global LOG_FILE

def initialize():
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)

    time = datetime.datetime.now()
    LOG_FILE = "sample.log." + time.strftime("%Y%m%d")
    log_file_handler = logging.FileHandler(LOG_FILE)
    log_file_handler.setLevel(logging.DEBUG)
    log_file_formatter = logging.Formatter('%(message)s')
    log_file_handler.setFormatter(log_file_formatter)
    logger.addHandler(log_file_handler)

    log_file_handler = logging.StreamHandler()
    log_file_handler.setLevel(logging.INFO)
    log_file_formatter = logging.Formatter('%(message)s')
    log_file_handler.setFormatter(log_file_formatter)    
    logger.addHandler(log_file_handler)


if __name__ == '__main__':
    initialize()
    logger.info("This should go both in console and log")
    logger.debug("This should go only to Log")

没有看到任何有问题的代码,没有。不知道。已经粘贴了代码。如前所述,当我从rc.local调用此脚本时,只有控制台日志记录工作。日志文件从未生成。全局文件不是这样工作的<代码>全局将在函数内部使用,以引用正在使用的变量是全局变量<代码>记录器和
日志文件
只应设置在您拥有
全局记录器
的位置,然后在初始化功能中,将
全局记录器、日志文件
作为第一行。此外,我还建议为日志文件设置一个完整路径,例如
/var/log/sample.log
,这样无论脚本从何处执行。
import time
import logging
import datetime

def initialize():
    # because logging is global module, so you can 
    # always get logger by logging.getLogger(__name__)
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)

    time = datetime.datetime.now()
    # if you only use LOG_FILE in function, you don't
    # have to declare it outside.
    LOG_FILE = "sample.log." + time.strftime("%Y%m%d")
    log_file_handler = logging.FileHandler(LOG_FILE)
    log_file_handler.setLevel(logging.DEBUG)
    log_file_formatter = logging.Formatter('%(message)s')
    log_file_handler.setFormatter(log_file_formatter)
    logger.addHandler(log_file_handler)

    log_file_handler = logging.StreamHandler()
    log_file_handler.setLevel(logging.INFO)
    log_file_formatter = logging.Formatter('%(message)s')
    log_file_handler.setFormatter(log_file_formatter)
    logger.addHandler(log_file_handler)


if __name__ == '__main__':
    initialize()
    logger = logging.getLogger(__name__)
    logger.info("This should go both in console and log")
    logger.debug("This should go only to Log")