views:

312

answers:

2

Hello,

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)
A: 

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

Kimvais
syslog works fine for GNU/Linux, but Mac OS X does not have a "messages" file like Linux, I tried to find some file where the log events where recorded, but without luck. It has /var/log/system.log but it does not record what syslog sends.
Oscar Carballal
+2  A: 

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

Oscar Carballal