【问题标题】:Error trying to log a windows service implementation in python尝试在 python 中记录 Windows 服务实现时出错
【发布时间】:2020-07-05 03:45:02
【问题描述】:

我正在尝试在 Python 中构建一个 Windows 服务并遵循这篇文章: http://thepythoncorner.com/dev/how-to-create-a-windows-service-in-python/


    import time
    import random
    from pathlib import Path
    from SMWinservice import SMWinservice
    
    import logging
    
    # Gets or creates a logger
    logger = logging.getLogger(__name__)
    
    # set log level
    logger.setLevel(logging.WARNING)
    
    # define file handler and set formatter
    file_handler = logging.FileHandler('LogsOrderIt.log')
    formatter    = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s (%(name)s)')
    file_handler.setFormatter(formatter) 
    
    # add file handler to logger
    logger.addHandler(file_handler)
    
    _svc_name_ = "OrderItService"
    _svc_display_name_ = "OrderIt Service"
    _svc_description_ = "Service intended to order my pdf files from Buffer"
    
    class OrderItService(SMWinservice):
    
        def start(self):
            self.isrunning = True
    
        def stop(self):
            self.isrunning = False
          
        def main(self):
            while self.isrunning:
                random.seed()
                x = random.randint(1, 1000000)
                Path(f"c:\df\{x}.txt").touch()
                logger.warning("New files named {path} created".format(a="c:\df\{x}.txt"))
                time.sleep(5)
    
    if __name__ == '__main__':
        OrderItService.parse_command_line()

在上面的代码中,SMWinservice 是文章中的基类,没有任何变化。

我想添加日志,所以我创建了一个记录器并尝试开始记录,但最终出现以下错误:

The instance's SvcRun() method failed
<Error getting traceback - traceback.print_exception() failed
%2: %3

如果我从我的代码中注释/删除下面的行,它工作正常:


    logger.warning("New files named {path} created".format(a="c:\df\{x}.txt"))

如果您能帮助我了解我的问题出在哪里,我将不胜感激。 谢谢

【问题讨论】:

    标签: python logging windows-services


    【解决方案1】:

    你可以尝试使用 f 个字符串。

    “路径”和“路径”是否应该相同?

    路径(f"c:\df{x}.txt").touch() logger.warning("创建了名为 {path} 的新文件".format(a="c:\df{x}.txt"))

    如果是这样试试这个

    路径(f"c:\df{x}.txt").touch() logger.warning(f"创建了名为 {Path} 的新文件")

    不太确定这是否能解决任何问题,但我只是想知道

    【讨论】:

    • 实际上它解决了,我的错误是占位符:logger.warning("New files named {path} created".format( path i> ="c:\df\{x}.txt"))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2020-02-27
    相关资源
    最近更新 更多