我是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)
答案 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