【问题标题】:Why always File Handler creating logging files in same path?为什么总是文件处理程序在同一路径中创建日志文件?
【发布时间】:2020-08-07 21:05:36
【问题描述】:

我正在尝试学习日志记录。当我创建我的第一个文件处理程序时,它工作正常。我创建了一个名为“Guesses_of_PC.log”的文件,处理程序已将其与 py 文件放在同一路径。

但是在我想要另一个路径中的 py 项目之后,我在 py 文件旁边创建了一个新文件夹并将该 py 文件放入新文件夹以及“Guesses_of_PC.log”。但是现在,当我运行 py 文件时,它仍然会在第一个目录中创建“Guesses_of_PC.log”,即使我为处理程序编写了新路径。为什么会这样?

感谢您的支持。代码如下:

log_guess.setLevel(logging.INFO)
log_hand_guess=logging.FileHandler(filename="Guesses_of_PC.log")
log_guess.addHandler(log_hand_guess)
log_form_guess=logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s")
log_hand_guess.setFormatter(log_form_guess) ```


  [1]: https://i.stack.imgur.com/BvUPm.png

【问题讨论】:

  • 能否提供minimal reproducible example。我们需要您如何创建日志文件。
  • 你是在第一个目录运行代码吗?即一些命令,例如:python new_folder/code.py.
  • 看来 Python 会根据您的工作目录解析相对路径。

标签: python logging path filehandler


【解决方案1】:

Python根据working directory解析相对路径,你的working directory是第一个目录。因此它使用first_folder/Guesses_of_PC.log 创建日志文件。要在新文件夹中创建日志文件,您需要使用filename="new_folder/Guesses_of_PC.log",或者在执行代码之前更改working directory。示例代码:

log_guess.setLevel(logging.INFO)
log_hand_guess=logging.FileHandler(filename="new_folder/Guesses_of_PC.log")
log_guess.addHandler(log_hand_guess)
log_form_guess=logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s")
log_hand_guess.setFormatter(log_form_guess)

【讨论】:

  • 我之前写了路径,就像你说的那样。现在它在正确的路径中创建日志文件,但它说我没有找到文件?!但是程序已经用自己的双手创造了它们。你可以看照片,我加了。谢谢您的支持。我刚刚了解了术语“工作目录”。
  • 看来你应该在打开文件时做同样的事情,因为open()在找到文件时也会搜索工作目录。
猜你喜欢
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多