Как зарегистрировать активность программы на Python в Mac OS X - PullRequest
14 голосов
/ 11 февраля 2010

Я довольно новичок в программировании на Python, поэтому у меня такой вопрос:

Как мне записать активность приложения Python в / var / log с 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)

Ответы [ 4 ]

23 голосов
/ 11 февраля 2010

Я нашел решение. Кажется, что 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 голос
/ 04 октября 2013

Вот руководство с примерно 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"
1 голос
/ 11 сентября 2011

Вы можете использовать инструмент командной строки "syslog" на OS X, чтобы получить все события syslog.

0 голосов
/ 11 февраля 2010

проблема в том, что учетная запись, в которой вы запускаете скрипт, не имеет разрешения на запись в /var/log

Я не знаю о специфике OS X, но я предполагаю, что syslog.syslog("message") должен напечатать что-то вроде (если оно действует так, как в Linux) Feb 11 14:27:47 hostname python: message до /var/log/messages

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...