【问题标题】:Error logs in debian using python使用python在debian中记录错误
【发布时间】:2014-12-25 07:35:54
【问题描述】:

我有一个使用 cron(基于 debian 的树莓派)在自动启动时运行的应用程序(使用 python 脚本)。根据应用程序中发生的事件,我正在使用 python 日志记录模块将日志写入文件。现在,我希望能够在程序运行时查看程序中任何错误的日志。例如,如果我的一个 USB 设备损坏,那么当应用程序启动时,它会给出一个错误,即找不到 USB 设备。有没有办法在 pi 的任何内置日志文件中查看这些错误?或者我们应该在代码中写错误日志。如果是这样,我该如何写日志来检测错误?

【问题讨论】:

    标签: python linux logging debian error-logging


    【解决方案1】:

    当 USB 设备断开连接时会出现两种错误:

    1. 系统错误
    2. 应用程序错误

    系统错误记录在内置日志文件中(通常在/var/log/)。在这种情况下,您可以使用 rsyslog 对文件中的错误进行分类,并使用其他应用程序查看它们。

    在这里您可以找到一些有用的rsyslog 配置:http://wiki.rsyslog.com/index.php/Configuration_Samples

    我相信很明显,如果出现应用程序错误,您应该使用应用程序记录错误并观察它们。

    【讨论】:

      【解决方案2】:

      好的,我根据您的 cmets 重写了答案: 安装 PyUSB

      检查 USB 设备是否正常工作:

      def getUSBDeviceStatus(vendor, product):
      
          #idVendor 0xfffe, idProduct=0x0001
          dev = usb.core.find(idVendor=vendor, idProduct=product)
          if dev is None:
              raise ValueError("Device failed or is not connected!")
          else:
              return 1
      

      根据日志类型检索日志:

      def retrieveLogs(type):
      
          with open('/home/pi/log/log.log') as file:
              lines = sum(1 for _ in file)
      
          readerPosition = 0
          readingLine = file.readline() 
      
          while readerPosition >= lines:
      
              if readingLine.find(type):
                  print readingLine
              readerPosition += 1
      

      PS:我假设您正在记录具有各自重要性的错误。

      【讨论】:

      • 嗨,但这不是我想要的。例如,如果连接到端口的 USB 设备坏了,当加载代码时,它会给我一个错误,即在 python 空闲 GUI 中找不到 USB 设备。如何将其写入日志?
      • 该注释使您看起来需要通知您的应用程序未处理或无法处理的错误。您可能需要让您的应用程序主动扫描系统日志或其他应用程序的日志。
      • 谢谢你。我正在使用 crontab 自动启动程序,使用命令 @reboot sudo python /home/Desktop/Appllication.py 是否可以通过在上述命令中附加一些内容来写入所有日志(错误和其他内容),以便 cron 写入日志中的所有错误/任何相关事件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2014-06-17
      • 2011-07-07
      • 2012-11-25
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多