Linux lưu trữ nhật ký hệ thống của tôi ở đâu?


81

Tôi đã viết một ứng dụng thử nghiệm đơn giản để ghi một cái gì đó vào một tệp nhật ký. Tôi đang sử dụng bạc hà linux và sau khi ứng dụng thực thi, tôi cố gắng xem nhật ký bằng lệnh này:

tail -n 100 /var/log/messages

nhưng các thông báo tệp không tồn tại và không được kiểm tra hoặc một cái gì đó. Dưới đây bạn có thể tìm thấy mã của tôi. Có thể tôi đang làm gì đó sai, tệp không được lưu trữ ở đó hoặc tôi cần kích hoạt đăng nhập trong bạc hà linux.

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>

void init_log()
{
    setlogmask(LOG_UPTO(LOG_NOTICE));
    openlog("testd",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
}

int main(void) {

    init_log();
    printf("Session started!");
    syslog(LOG_NOTICE, "Session started!!");
    closelog();

    return EXIT_SUCCESS;
}

Nó phụ thuộc vào trình ghi nhật ký hệ thống bạn đang sử dụng. Nó phải có một tệp cấu hình ở đâu đó /etc/mà bạn phải thay đổi cho số nhận dạng của mình ( "test"trong trường hợp của bạn) và cơ sở.
Một số lập trình viên anh chàng

Câu trả lời:


79

Trên máy Ubuntu của tôi, tôi có thể thấy đầu ra tại /var/log/syslog.

Trên máy RHEL / CentOS, đầu ra được tìm thấy trong /var/log/messages.

Điều này được kiểm soát bởi rsyslogdịch vụ, vì vậy nếu điều này bị tắt vì một lý do nào đó, bạn có thể cần phải khởi động lại systemctl start rsyslog.

Như những người khác đã lưu ý, syslog()đầu ra của bạn sẽ được ghi lại bằng /var/log/syslogtệp.
Bạn có thể xem hệ thống, người dùng và các nhật ký khác tại /var/log.

Để biết thêm chi tiết: đây là một liên kết thú vị .



1
Có vẻ như đó không phải /var/log/sysloglà bất kỳ loại mặc định thực sự nào; có lẽ Ubuntu tự cấu hình điều đó.
kevr,

24

Ngoài câu trả lời được chấp nhận, sẽ hữu ích nếu biết những điều sau ...

Mỗi chức năng đó phải có các trang hướng dẫn sử dụng liên kết với chúng.

Nếu bạn chạy man -k syslog(tìm kiếm từ khóa về các trang người đàn ông), bạn sẽ nhận được danh sách các trang người đàn ông đề cập đến hoặc về nhật ký hệ thống

$ man -k syslog
logger (1)           - a shell command interface to the syslog(3) system l...
rsyslog.conf (5)     - rsyslogd(8) configuration file
rsyslogd (8)         - reliable and extended syslogd
syslog (2)           - read and/or clear kernel message ring buffer; set c...
syslog (3)           - send messages to the system logger
vsyslog (3)          - send messages to the system logger

Bạn cần hiểu các phần hướng dẫn sử dụng để nghiên cứu sâu hơn.

Đây là một đoạn trích từ trang dành cho người đàn ông, giải thích các phần của trang người đàn ông:

The table below shows the section numbers of the manual followed  by
the types of pages they contain.

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages and conven‐
       tions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Để đọc phần chạy trên

$man man 

Vì vậy, nếu bạn chạy, man 3 syslogbạn sẽ nhận được trang hướng dẫn sử dụng đầy đủ cho sysloghàm mà bạn đã gọi trong mã của mình.

SYSLOG(3)                Linux Programmer's Manual                SYSLOG(3)

NAME
   closelog,  openlog,  syslog,  vsyslog  - send messages to the system
   logger

SYNOPSIS
   #include <syslog.h>

   void openlog(const char *ident, int option, int facility);
   void syslog(int priority, const char *format, ...);
   void closelog(void);

   #include <stdarg.h>

   void vsyslog(int priority, const char *format, va_list ap);

Không phải là một câu trả lời trực tiếp nhưng hy vọng bạn sẽ thấy điều này hữu ích.


22

Vị trí nhật ký mặc định (rhel) là

Thông báo chung:

/var/log/messages

Thông báo xác thực:

/var/log/secure

Sự kiện qua thư:

/var/log/maillog

Kiểm tra /etc/syslog.confhoặc của bạn /etc/syslog-ng.conf(tùy thuộc vào cơ sở nhật ký hệ thống nào bạn đã cài đặt)

Thí dụ:

$ cat /etc/syslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none         /var/log/messages

# The authpriv file has restricted access.
authpriv.*                             /var/log/secure

# Log all the mail messages in one place.
mail.*                                 /var/log/maillog

#For a start, use this simplified approach.
*.*                                     /var/log/messages

9

Bạn phải cho hệ thống biết thông tin nào cần ghi và nơi đặt thông tin. Ghi nhật ký được định cấu hình trong /etc/rsyslog.conftệp, sau đó khởi động lại rsyslog để tải cấu hình mới. Các quy tắc ghi nhật ký mặc định thường nằm trong một /etc/rsyslog.d/50-default.conftệp.



4

Ghi nhật ký rất dễ cấu hình trong Linux, và bạn có thể muốn xem xét /etc/syslog.conf(hoặc có thể là bên dưới /etc/rsyslog.d/) của mình. Chi tiết phụ thuộc vào hệ thống con ghi nhật ký và phân phối.

Cũng xem xét các tệp bên dưới /var/log/(và có thể chạy dmesgcho nhật ký hạt nhân).


0

Tôi đang chạy Ubuntu trong WSL (Hệ thống con của Windows cho Linux) và systemctl start rsyslogkhông phù hợp với tôi.

Vì vậy, những gì tôi đã làm là:

$ service rsyslog start

Bây giờ syslogtệp sẽ xuất hiện tại/var/log/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.