I'm pretty 开发者_运维百科new to Python programming so I have this question:
How can I log a Python application activity into /var/log with Mac OS X?
I tried using syslog module, but it does not seem to write anything. I tried also with the logging module, but I always run into a permission error.
How can I do it?
Update:
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)
I found the solution. It seems that Mac OS X does not record any log activity lower than LOG_ALERT, so this does the trick
import syslog
# Define identifier
syslog.openlog("Python")
# Record a message
syslog.syslog(syslog.LOG_ALERT, "Example message")
This message is recorded on /var/log/system.log
You can use the command line tool "syslog" on os x, to get all syslog events.
Here's a guide with about 5 steps you need to complete - they're straightforward, and it worked for me:
http://vastdevblog.vast.com/blog/2012/04/18/using-syslogappender-on-os-x/
Pay close attention to this step, as you have to make a few command calls there:
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"
the problem is that the account you are running the script as does not have write permission to /var/log
I do not know about OS X specifics, but I guess that syslog.syslog("message")
should print something like (if it acts the way it does in Linux)
Feb 11 14:27:47 hostname python: message
to /var/log/messages
精彩评论