2010-02-11 62 views
11

我很新的Python編程,所以我有這樣的疑問:如何登錄Python程序活動在Mac OS X

我如何才能登錄Python應用程序的活動到在/ var /日誌與Mac OS X?

我嘗試使用syslog模塊,但它似乎沒有寫任何東西。我也嘗試過使用日誌記錄模塊,但我總是遇到權限錯誤。

我該怎麼辦?

更新:

import logging 
import time 
LOG_FILENAME = "/var/log/writeup.log" + time.strftime("%Y-%m-%d") 
LOG_FORMAT = "%(asctime)s - %(filename)s - %(levelname)s - %(message)s" 
log = logging.getLogger("main.py") 
log.setLevel(logging.DEBUG) 
ch = logging.FileHandler(LOG_FILENAME) 
ch.setLevel(logging.DEBUG) 
format = logging.Formatter(LOG_FORMAT) 
ch.setFormatter(format) 
log.addHandler(ch) 
+0

顯示你如何使用這些模塊。 – ghostdog74 2010-02-11 12:07:59

+0

我用日誌代碼更新了問題。我只在python解釋器中使用syslog,使用「import syslog」和「syslog.syslog('test') – 2010-02-11 12:16:40

回答

23

我找到了解決方案。如此看來,Mac OS X中不記錄任何日誌活動比LOG_ALERT低,所以這確實

import syslog 
# Define identifier 
syslog.openlog("Python") 
# Record a message 
syslog.syslog(syslog.LOG_ALERT, "Example message") 

此消息被記錄在招/var/log/system.log

+3

是的,但有沒有辦法使用python日誌記錄和syslog處理程序? – dzen 2011-01-19 11:11:38

+0

是的,通過logging.handlers.SysLogHandler。看一下:http://docs.python.org/library/logging.html?highlight=logging#logging.handlers.SysLogHandler – 2011-01-19 11:47:07

+1

在OS X 10.8中,默認是在/var/log/system.log中保存所有內容的優先級高於LOG_INFO。 – 2012-08-04 11:52:16

-1

的問題是帳戶您正在運行的不具有寫權限/var/log

我不知道OS X細節的劇本,但我想這syslog.syslog("message")應該打印類似的東西(如果它在Linux中的行爲方式) Feb 11 14:27:47 hostname python: message/var/log/messages

+0

syslog對於GNU/Linux很好,但是Mac OS X沒有像Linux那樣的」messages「文件,我嘗試過找到一些文件,其中記錄了日誌事件,但沒有運氣。它有/var/log/system.log,但它不記錄syslog發送的內容。 – 2010-02-11 12:37:54

1

您可以使用命令在os x上使用在線工具「syslog」來獲取所有syslog事件。

1

這裏的約5個步驟指南,你需要完成 - 他們是簡單的,它爲我工作:

http://vastdevblog.vast.com/blog/2012/04/18/using-syslogappender-on-os-x/

密切關注到了這一步,因爲你必須做出一些命令調用有:

sudo /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.syslogd.plist 

... 

Command: Add :Sockets:NetworkListener dict 
Command: Add :Sockets:NetworkListener:SockServiceName string "syslog" 
Command: Add :Sockets:NetworkListener:SockType string "dgram"