2015-06-16 73 views
3

當我運行在下面終端代碼其創建一個日誌文件當我在pycharm中運行時記錄basicConfig不會創建日誌文件?

import logging 
logging.basicConfig(filename='ramexample.log',level=logging.DEBUG) 
logging.debug('This message should go to the log file') 
logging.info('So should this') 
logging.warning('And this, too') 

但是當我在pycharm運行samecode(具有不同的文件名=「ram.log」)其不產生任何日誌文件。爲什麼?

import logging 
logging.basicConfig(filename='ram.log',level=logging.DEBUG) 
logging.debug('This message should go to the log file') 
logging.info('So should this') 
logging.warning('And this, too') 

我需要做什麼來創建一個帶有pycharm的日誌文件?

+1

也許PyCharm設置了一個不同的工作目錄,這意味着文件在另一個地方結束。嘗試提供完整的路徑。 –

+0

你的第二塊代碼工作得很好,並在PyCharm中爲我創建一個日誌文件。 –

+0

我提供瞭如下的完整路徑 logging.basicConfig(filename ='home/ra/myapp1.txt',level = logging.INFO) logging.info('Started') 但是沒有創建文件 –

回答

1

這確實創建使用其內的PY終端pycharm終端內的日誌中。你需要檢查終端的位置(在Windows上試試dir或在linux/mac上試試pwd)。不要只是放入ram.log,而是使用文件所在位置的完整文件路徑。 E.G.

logging.basicConfig(filename='/Users/Donkey/Test/ram.log', level=logging.DEBUG) 
1

Maximas是正確的。文件路徑與執行環境有關。的但是不是寫下來的絕對路徑,你可以嘗試動態路徑解析的方法:

filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'ram.log') 
logging.basicConfig(filename=filename, level=logging.DEBUG) 

這假定ram.log駐留在與包含上述代碼中的一個相同的目錄(這就是爲什麼__file__用於)。

+0

會'filename =''.join([os.getcwd(),'ram.log'])'更短,更容易閱讀? – athraa

0

我遇到了同樣的問題,發現以前提供的答案都不起作用。也許這個問題早已被Ramnath Reddy解決了,但我無法在網上找到正確的答案。

幸運的是,我通過在logging.basicConfig()之前添加了以下行,從同事的代碼中找到了解決方案。

刪除與根記錄器對象關聯的所有處理程序。

for handler in logging.root.handlers[:]: 
    logging.root.removeHandler(handler) 

嘗試,看看它是否有助於爲任何人有同樣的問題。

相關問題