【发布时间】:2019-11-26 23:58:58
【问题描述】:
我正在使用一个可以加载 python 解释器并运行任何 python 脚本的应用程序。我正在此应用程序中创建进程,这些进程运行脚本来控制外部硬件。硬件在特定地址和端口上通过 TCP/IP 以文本形式侦听命令,并通过同一端口发送响应。
我有 SocketInterface.py 处理编码/解码字节并处理所有套接字内容,以便其他模块可以调用SocketInterface.send()、.receive() 等。这样的模块之一是命令行-ish gui 只是在循环中运行 send() 和 receive(),从文本框中读取命令并在另一个文本框中显示响应。
我正在研究的另一个模块将涉及一些包装函数,这些函数会自动以正确的格式构造命令,发送它,然后等待从硬件接收适当的响应。我想将日志记录纳入其中。我发送的命令和收到的响应的 INFO 级别语句,某些 TCP/IP 内容的 DEBUG 级别语句等。
最终,我希望我会有多个“脚本”,每个工作流一个,但我希望它们都写入同一个日志,比如说在一天内。
来自我的命令包装模块:
def __init__(self):
self.si = SocketInterface()
self.logger = logging.getLogger(__name__)
try:
os.mkdir('logs')
except FileExistsError:
pass
logging.basicConfig(
filename='logs/{}.log'.format(time.strftime('%Y-%m-%d')),
filemode='a', level=logging.DEBUG,
format='%(asctime)s::%(name)s::%(levelname)s::%(message)s'
)
使用 basicConfig() 的工作方式,这段代码可以执行任意多次(尽管我可能希望避免让os.mkdir() 尝试运行很多次。我只是不知道在哪里放置此代码以确保它确实确实执行,而不是将其粘贴到任何地方。
有没有比在我编写的每个脚本中将它放在main() 的开头更简洁的解决方案?
【问题讨论】:
标签: python python-logging