2010-02-11 35 views
11

Tôi khá mới đối với lập trình Python vì vậy tôi có câu hỏi này:Cách đăng nhập hoạt động chương trình python trong Mac OS X

Làm cách nào để đăng nhập hoạt động ứng dụng Python vào/var/log với Mac OS X?

Tôi đã thử sử dụng mô-đun nhật ký hệ thống, nhưng dường như không viết gì cả. Tôi cũng đã thử với mô-đun đăng nhập, nhưng tôi luôn luôn chạy vào một lỗi cho phép.

Tôi có thể làm như thế nào?

Cập nhật:

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

cho biết cách bạn đã sử dụng các mô-đun đó.! – ghostdog74

+0

Tôi đã cập nhật câu hỏi bằng mã đăng nhập. Tôi đã thử syslog chỉ trong trình thông dịch python, bằng cách sử dụng "import syslog" và "syslog.syslog ('test') –

Trả lời

23

Tôi đã tìm ra giải pháp. Dường như Mac OS X không ghi lại bất kỳ hoạt động đăng nhập thấp hơn LOG_ALERT, vì vậy đây hiện các trick

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

Thông báo này được ghi lại trên /var/log/system.log

+3

Có, nhưng có cách nào để sử dụng đăng nhập python với một trình xử lý syslog ? – dzen

+0

Có, thông qua logging.handlers.SysLogHandler. Hãy xem: http://docs.python.org/library/logging.html?highlight=logging#logging.handlers.SysLogHandler –

+1

Trong OS X 10.8, mặc định là lưu mọi thứ có mức độ ưu tiên cao hơn LOG_INFO trong /var/log/system.log –

-1

vấn đề là tài khoản mà bạn đang chạy các script như không có quyền ghi vào /var/log

Tôi không biết về OS X chi tiết cụ thể, nhưng tôi đoán rằng syslog.syslog("message") nên in một cái gì đó như (nếu nó hoạt động theo cách của nó trong Linux) Feb 11 14:27:47 hostname python: message đến /var/log/messages

+0

syslog hoạt động tốt cho GNU/Linux, nhưng Mac OS X không có tập tin" message "như Linux, tôi đã thử để tìm thấy một số tập tin mà các sự kiện đăng nhập mà ghi lại, nhưng không có may mắn.Nó có /var/log/system.log nhưng nó không ghi lại những gì syslog sẽ gửi –

1

Bạn có thể sử dụng lệnh dòng công cụ "syslog" trên os x, để có được tất cả các sự kiện syslog.

1

Dưới đây là một hướng dẫn viên với khoảng 5 bước bạn cần phải hoàn thành - chúng đơn giản, và nó làm việc cho tôi:

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

chú ý tới bước này, như bạn phải thực hiện một vài lệnh gọi ở đó:

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" 
Các vấn đề liên quan