从Python程序写入日志文件

12 投票
3 回答
33096 浏览
提问于 2025-04-17 19:29

我想把一些字符串输出到一个日志文件里,并且希望这个日志文件能够持续更新。

我查了一下Python的日志模块,发现它主要是关于格式化和同时访问的问题。

如果我有什么遗漏的地方,或者有没有其他的方法,请告诉我。

3 个回答

4

你可以使用日志API将信息记录到一个文件里。

举个例子:http://docs.python.org/2/howto/logging.html#logging-to-a-file

14

我想分享一下关于使用日志记录的看法。我最近才发现有个叫做Logging的模块,刚开始我对它有点抵触。可能是因为一开始看起来工作量很大,但其实它非常简单,而且特别有用。

这是我使用的设置。和Mkinds的回答类似,但加上了时间戳。

# Set up logging
log = "bot.log"
logging.basicConfig(filename=log,level=logging.DEBUG,format='%(asctime)s %(message)s', datefmt='%d/%m/%Y %H:%M:%S')
logging.info('Log Entry Here.')

这样会产生类似下面的效果:

22/09/2015 14:39:34 Log Entry Here.
20

通常我会这样做:

  # logging  
  LOG = "/tmp/ccd.log"                                                     
  logging.basicConfig(filename=LOG, filemode="w", level=logging.DEBUG)  

  # console handler  
  console = logging.StreamHandler()  
  console.setLevel(logging.ERROR)  
  logging.getLogger("").addHandler(console)

日志部分初始化了日志的基本配置。接下来,我设置了一个控制台处理器,它会单独打印一些日志信息。通常我的控制台输出只显示错误信息(logging.ERROR),而详细的输出则记录在日志文件中。

现在你的日志信息会被打印到文件里。例如可以使用:

logger = logging.getLogger(__name__)
logger.debug("hiho debug message")

甚至可以使用

logging.debug("next line")

也应该可以正常工作。

Doug Hellmann 有一个很不错的指南

撰写回答