Python日志记录模块 - 从命令行运行时输出到文本文件

时间:2016-04-24 18:00:02

标签: python logging raspberry-pi raspberry-pi2

我有一个使用日志记录模块将数据输出到文本文件的python程序,我遇到的问题是当我在 PyCharm 中运行脚本时,文本文件的输出正常工作( 1-10值输出到控制台屏幕并写入 Log_Test_File.txt ),但是当我从命令行运行脚本时,只显示控制台输出(没有写入*。 txt文件)。这在UbuntuRaspberry Pi上都会发生。

我将在启动时自动运行Pi上的脚本(作为sudo),有没有办法配置Pi或脚本,以便文本输出正常工作?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging

logging.basicConfig(filename="Log_Test_File.txt",
                level=logging.DEBUG,
                format='%(levelname)s: %(asctime)s %(message)s',
                datefmt='%m/%d/%Y %I:%M:%S')

i=0
while i<10:
    logging.info("Logging test: {}".format(i))
    i+=1

1 个答案:

答案 0 :(得分:1)

您提供的代码运行良好。

如果您在查找正确创建日志文件时遇到问题,原因可能是:

  • 无权创建日志文件
  • 该脚本根本不运行

如果您计划将脚本作为长时间运行的服务运行,我建议您跳过创建显式日志文件,而不是登录到stdout。发送到stdout的输出很容易通过程序控制脚本的执行(例如supervisord,systemd等)来查看,捕获和处理。

另一种选择是直接登录到syslog,但这可能会变得更加复杂,因为你的程序必须自己知道,用什么值来识别进程。对于程序本身而言,这对于流程管理器来说大多简单。