2014-01-06 50 views
0

對於一個python項目,我有一個python日誌配置文件與多個文件處理程序。它適用於靜態日誌文件名。python日誌記錄:多個處理程序如何寫入一個動態日誌文件

在動態文件的情況下,它無法與OSError: [Errno 17] File exists: '/var/tmp/log_2011_01_01_1310'

由於第一把手創建目錄,那麼控制前進到第二模塊,其中handler2嘗試創建的目錄和文件再次和失敗,如果我繼續處理程序同樣如何獲得之前創建的日誌文件信息?

意圖是: handler1將創建日誌文件,並將用於記錄多個模塊中使用的休息處理程序。

args = ('/var/tmp/log.file','a') 

爲了使動態我使用自定義的文件處理器的解決方案。

[handler1] 
level=DEBUG 
formatter=client 
class: logger.myFileHandler 
args = ('/var/tmp','client.log','a') 

[handler2] 
level=DEBUG 
formatter=server 
class: logger.myFileHandler 
args = ('/var/tmp','client.log','a') 

#custom file handler class 

class myFileHandler(logging.FileHandler): 
    def __init__(self,path,fileName,mode): 
     time = '2011_01_01_1310' ##Will generate dynamically once in execution. 
     path = path+"/log_"+time 
     os.mkdir(path) 
     super(myFileHandler,self).__init__(path+"/"+fileName,mode) 
+0

所以你的問題是...? – ereOn

+0

請爲您的問題使用問號。對於想要回答的人來說,它讓事情變得如此簡單,以瞭解你的要求。 – norlesh

回答

0

您不能使用os.mkdir創建現有目錄。但是你用相同的參數調用它兩次。

無論是檢查目錄是否已經在調用os.mkdir存在或捕獲異常而忽略它:

比打開一個文件兩次追加到它是好的
try: 
    os.mkdir(path) 
except OSError as e: 
    if e.errno != 17: 
     raise 

其他。

相關問題