2010-02-11 17 views
11

Sono abbastanza nuovo di programmazione Python quindi ho questa domanda:Come registrare l'attività programma Python in Mac OS X

Come posso registrare un'attività applicazione Python in/var/log con Mac OS X?

Ho provato a utilizzare il modulo syslog, ma non sembra scrivere nulla. Ho provato anche con il modulo di registrazione, ma mi imbatto sempre in un errore di autorizzazione.

Come posso farlo?

Aggiornamento:

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

mostra come hai usato quei moduli.! – ghostdog74

+0

Ho aggiornato la domanda con il codice di registrazione. Ho provato syslog solo nell'interprete python, usando "import syslog" e "syslog.syslog ('test') –

risposta

23

ho trovato la soluzione. Sembra che Mac OS X non registra alcuna attività di log inferiore LOG_ALERT, quindi questo fa il trucco

import syslog 
# Define identifier 
syslog.openlog("Python") 
# Record a message 
syslog.syslog(syslog.LOG_ALERT, "Example message") 

Questo messaggio viene registrato su /var/log/system.log

+3

Sì, ma esiste un modo per utilizzare la registrazione python con un gestore syslog ? – dzen

+0

Sì, tramite logging.handlers.SysLogHandler. Guarda: http://docs.python.org/library/logging.html?highlight=logging#logging.handlers.SysLogHandler –

+1

In OS X 10.8, l'impostazione predefinita è salva tutto ha una priorità più alta di LOG_INFO in /var/log/system.log. –

-1

il problema è che l'account si esegue lo script come non ha i permessi di scrittura per /var/log

Non so su OS X specifiche, ma credo che syslog.syslog("message") dovrebbe stampare qualcosa di simile (se si comporta il modo in cui lo fa in Linux) Feb 11 14:27:47 hostname python: message a /var/log/messages

+0

syslog funziona bene per GNU/Linux, ma Mac OS X non ha un file" messaggi "come Linux, ho provato per trovare un file dove gli eventi del registro sono stati registrati, ma senza fortuna: ha /var/log/system.log ma non registra ciò che invia syslog. –

1

È possibile utilizzare il comando strumento di linea "syslog" su os x, per ottenere tutti gli eventi syslog.

1

Ecco una guida con circa 5 punti avete bisogno per completare - sono semplici, e ha funzionato per me:

http://vastdevblog.vast.com/blog/2012/04/18/using-syslogappender-on-os-x/

Prestare particolare attenzione a questo passo, come si deve fare qualche comanda le chiamate qui:

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"