2014-02-26 13 views
0

我需要在作爲進程運行的python腳本中記錄錯誤。如何在python腳本中記錄錯誤(進程)

我當前的代碼:

import ips 
import sys 
import time 
import logging 
import os 
import string 
import json 
import multiprocessing 
import MySQLdb as mdb 

from daemon import Daemon 


logging.basicConfig(format = u'%(levelname)-8s [%(asctime)s] %(message)s', level = logging.INFO, filename = u'/var/log/info.log') 


class MyDaemon(Daemon): 
    def run(self):   
     print 'the script was run' 
     logging.info("the script was run") 

     while True: 

      [My code Here] 

      time.sleep(10) 


if __name__ == "__main__": 
    daemon = MyDaemon('/var/run/pid.pid') 
    if len(sys.argv) > 1: 
     if 'start' == sys.argv[1]: 
      daemon.start() 
     elif 'stop' == sys.argv[1]: 
      daemon.stop() 
     elif 'restart' == sys.argv[1]: 
      daemon.restart() 
     else: 
      print "Unknown command" 
      sys.exit(2) 
     sys.exit(0) 
    else: 
     print "usage: %s start|stop|restart" % sys.argv[0] 
     sys.exit(2) 

有些時候,我進程關閉,但我沒有看到錯誤報告。如果流程關閉,我如何看到錯誤報告?

+0

如果它正在關閉,但有一個例外,你會想要在你的主 – goncalopp

+0

有一個全面的'try'我建議你將'basicConfig()'調用移動到'if __name__ =='__main__ 「身體 - 儘管這不是你的問題(爲什麼這是一個評論,而不是答案)。 –

回答

0

使用記錄模塊捕獲異常。例如:

import logging 

except serial.SerialException as e: 
     logging.debug("Could not open serial port: {}".format(com_port, e)) 

我不知道你的代碼,你在循環中輸入,但我可以建議你在程序中使用也許返回。如果因特定原因而中斷,那麼你會得到一些提示。這也可以被記錄。 在Python中,你可以輕鬆地返回幾個參數。我不知道,爲什麼你不使用這些功能。