如何在Mac OS X中记录python程序活动

时间:2010-02-11 11:45:47

标签: python macos logging

我是Python编程的新手,所以我有这个问题:

如何使用Mac OS X将Python应用程序活动记录到/ var / log中?

我尝试使用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)

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以在os x上使用命令行工具“syslog”来获取所有syslog事件。

答案 2 :(得分: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"

答案 3 :(得分:-1)

问题是您运行脚本的帐户没有/var/log的写入权限

我不知道OS X的具体细节,但我想syslog.syslog("message")应该打印一些类似的东西(如果它的行为与它在Linux中的作用相同) Feb 11 14:27:47 hostname python: message/var/log/messages