2010-02-11 65 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"