2016-01-20 56 views
0

我想在我的django項目中創建日誌,但是我想爲每個執行使用不同文件名的日誌。我到目前爲止所做的是將其設置爲here,但是這會創建一個日誌並將所有內容都放入其中。我希望每個執行都有一個動態名稱的日誌,例如實例名稱+日期等。這可以做到嗎?使用動態名稱的Django日誌記錄

編輯:創建計劃任務的代碼示例。 (我想你會得到什麼從這樣做)

def create_schedule (inst): 


    path_task=os.path.join(os.path.join(os.path.dirname(__file__),os.pardir),os.pardir) 
    path_task=path_task[:len(path_task)-2]+'executeInstance.py' 
    tr='"py '+path_task + ' ' + str(inst.id)+'"' 
    tn='Inst ' + str(inst.id) 

    time=inst.schedule.time 


    if inst.schedule.scheduleType=='Weekly': 

     w_days='' 
     for day in inst.schedule.weekDays.all(): 
       if w_days!='': 
        w_days=w_days+',' 
       w_days=w_days+day.weekDay[:3].upper() 

     tn='"'+tn+'"' 
     cmd_sch='schtasks /create /tn ' + tn + ' /tr ' + tr + ' /sc weekly /d '+ w_days + ' /st ' + time + ' /RU SYSTEM' 
     result = subprocess.check_output(cmd_sch, shell=True) 

然後捕獲異常在executeInstance.py

except smtplib.SMTPDataError as e: 

      status_log='Error' 
      error_desc='Message size too big for your email server' 


      inst=Instance.objects.get(id=instance_id) 
      log=Log(instance=inst,status=status_log,errorDesc=error_desc,executionDate=datetime.now()) 
      log.save() 
      logger.error(log) 
+0

「每次執行」是什麼意思? – Sayse

+0

我的程序正在爲任務調度器創建一些taks。所以每個任務都有他自己的ID,名字等等。所以如果我安排任務1在13h執行,明天在13h執行,我想有2個日誌。 「Taks1-20-01-2016」.log和「Task1-21-01-2016」.log。即使我可以爲每個任務提供不同的日誌也沒問題。像Task1.log,Task2.log等 – SwiProlog123

+1

請添加代碼示例 –

回答

1
+0

有了這個我就卡住了與filehandler一樣。由於處理程序在settings.py中,我無法在那裏獲取實例執行時間。 (或者,也許我只是不知道如何)如果我可以得到這個時間在那裏,那麼我也可以得到inst.name並使用它作爲文件名,並解決問題。不知道我對不對,在這方面還是新手。如果您有任何建議如何獲取settings.py中的實例執行時間/實例名稱,請分享。 – SwiProlog123

+0

我認爲如果你知道每天/每天執行一次任務(例如),那麼你可以相應地設置時間。如果情況並非如此,那麼事實上,這並不是很有幫助。 – eran

+0

是的,執行時間不固定... – SwiProlog123