2008-12-19 6 views
42

Tôi có một chương trình được viết cho Linux và tôi đang cố gắng tạo và chạy nó trên máy MacOS 10.5 của mình. Chương trình xây dựng và chạy mà không có vấn đề, tuy nhiên nó làm cho nhiều cuộc gọi đến syslog. Tôi biết rằng syslogd đang chạy trên mac của tôi, tuy nhiên tôi dường như không thể tìm thấy nơi mà các cuộc gọi syslog của tôi được xuất ra.Đọc đầu ra syslog trên máy Mac

Các cuộc gọi syslog có dạng

syslog (LOG_WARNING, "Log message"); 

Bất kỳ ý tưởng nơi tôi có thể tìm thấy dữ liệu ghi nhận của tôi?

Trả lời

12

Khi nghi ngờ, luôn có man syslog.

Bạn có thể tìm thấy thư của mình trong /var/log/syslog; máy của tôi được thiết lập ra khỏi hộp để chỉ bao gồm các thông báo ở mức cao để bạn có thể cần phải có cài đặt của mình.

Bạn cũng có thể đọc các thông điệp qua syslog (1), hoặc tạo ra một thông điệp thử nghiệm với một lệnh như

$ syslog -s -l INFO "Hello, world." 

sử dụng một mức độ nghiêm trọng của P ("hoảng loạn") và bạn sẽ nhận được một thông điệp thú vị trên bảng điều khiển của bạn ngay lập tức.

+0

Không yêu cầu sudo? –

+0

Không có trên máy mac. Nó không giống như các cơn sốt hoảng loạn thực sự gây ra một hoảng sợ: Lần đăng nhập cuối: Mon Jan 14 22:41:57 trên bảng điều khiển 499 $ syslog -s -l P "Tạm biệt thế giới độc ác" Thông điệp phát sóng từ [email protected] (không có tty) tại 23:57 MST ... Tạm biệt thế giới độc ác –

40

Bạn cũng có thể sử dụng chương trình Console.app để xem tệp nhật ký. Đó là purdy.

+19

Um, Console.app tự động hiển thị 'system.log' và các tệp nhật ký khác. –

+1

Purdy là gì ?? – Pacerier

+0

@Pacerier Tôi tin rằng trong trường hợp này, "purdy" có nghĩa là một cách phát âm hài hước của từ "đẹp". –

3

Xây dựng dựa trên câu trả lời của Charlie, tôi muốn thêm rằng bạn nên xem manpage syslog.conf(5) và cũng xem qua tệp /etc/syslog.conf (đây là cấu hình syslog được định nghĩa theo mặc định và cũng như nhìn thấy nó, trên OS X 10.5.x).

5

Mac OS X triển khai a superset of syslog's functionality. Tất cả syslog đều có, nhưng là một phần của ASL.

Bàn điều khiển, được đề cập bởi Matthew Schinckel trong câu trả lời của ông, là GUI trên ASL. Nó sẽ hiển thị cho bạn bất kỳ thư nào tồn tại trong cơ sở dữ liệu, như được tìm nạp bởi các truy vấn được liệt kê trong thanh bên. Có hai truy vấn theo mặc định; một chỉ hiển thị các tin nhắn được gửi với cơ sở Console (như được sử dụng bởi NSLog, trong số những thứ khác), trong khi cái kia hiển thị tất cả các thông báo nhật ký. Kiểm tra truy vấn tất cả thư; có thể bạn sẽ tìm thấy tin nhắn của mình ở đó.

Đó là "tất cả" không có dấu hoa thị. Nếu bạn nhìn vào /etc/asl.conf, bạn sẽ thấy dòng này:

# save everything from emergency to notice 
? [<= Level notice] store 

May mắn thay, trong trường hợp của bạn, thông báo sẽ vượt qua kiểm tra này, kể từ khi cảnh báo outranks (là một con số ít hơn) thông báo.

0

Kiểm tra cuộc gọi đến openlog ở đâu đó trong chương trình. Sau khi gọi tới openlog, syslog sẽ lưu đầu ra của nó vào tệp nhật ký đó thay vì vị trí mặc định.

58

/var/log/system.log

Bạn có thể theo dõi nó dễ dàng sử dụng tail -f /var/log/system.log

Xem thêm "logger" (man logger) và "syslog" (man syslog).

3

Có thể thú vị cần lưu ý: Apple đã sử dụng syslogd thực trong quá khứ nhưng trong khi đó tất cả điều này đã chuyển sang ASL (Nhật ký hệ thống Apple). Lệnh syslog vẫn có sẵn, nhưng nó sẽ chỉ truy cập vào một nhật ký này. Nếu bạn muốn truy cập tất cả các thông điệp tường trình của ASL trên tất cả các tệp nhật ký được định cấu hình, hãy sử dụng lệnh log.

Ví dụ: tất cả các tin nhắn đăng nhập chương trình sau đây được tạo ra bởi Safari trong vòng hai ngày qua (kiên nhẫn, có thể mất một thời gian):

log show --predicate 'process == "Safari"' --last 2d 

Xem man log cho tất cả các hành động mà bạn có thể thực hiện, tất cả các thông số nó biết và những gì thuộc tính bạn có thể lọc cho.

+0

Đây là câu trả lời chính xác, hiện đại. –