2010-02-11 6 views
11

Soy bastante nuevo en la programación Python, así que tengo esta pregunta:Cómo registrar las actividades del programa de Python en Mac OS X

¿Cómo puedo registrar una actividad de la aplicación Python en/var/log con Mac OS X?

He intentado usar el módulo syslog, pero parece que no escribe nada. Intenté también con el módulo de registro, pero siempre encuentro un error de permiso.

¿Cómo puedo hacerlo?

Actualización:

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

muestran cómo se usaron esos módulos.! – ghostdog74

+0

Actualicé la pregunta con el código de registro. Intenté syslog solo en el intérprete de Python, usando "import syslog" y "syslog.syslog ('test') –

Respuesta

23

Encontré la solución. Parece que Mac OS X no registra ninguna actividad del registro más bajo que LOG_ALERT, por lo que este hace el truco

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

Este mensaje se graba en /var/log/system.log

+3

Sí, pero ¿hay alguna forma de usar el registro de Python con un controlador de syslog? ? – dzen

+0

Sí, a través de logging.handlers.SysLogHandler. Eche un vistazo: http://docs.python.org/library/logging.html?highlight=logging#logging.handlers.SysLogHandler –

+1

En OS X 10.8, el valor predeterminado es guardar todo tiene una prioridad más alta que LOG_INFO en /var/log/system.log. –

-1

el problema es que la cuenta que está ejecutando la secuencia de comandos que no tiene permiso de escritura en /var/log

No sé sobre OS X específicos, pero supongo que syslog.syslog("message") debería imprimir algo así como (si funciona de la manera que lo hace en Linux) Feb 11 14:27:47 hostname python: message a /var/log/messages

+0

syslog funciona bien para GNU/Linux, pero Mac OS X no tiene un archivo de" mensajes "como Linux, probé para encontrar algún archivo donde se registraron los eventos de registro, pero sin suerte. Tiene /var/log/system.log pero no registra lo que syslog envía. –

1

Puede utilizar el comando herramienta de línea "syslog" en os x, para obtener todos los eventos syslog.

1

He aquí una guía con cerca de 5 pasos que necesita para completar - son sencillos, y funcionó para mí:

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

Ponga mucha atención a este paso, ya que tienes que hacer algunos llamadas de comando allí:

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"