Onde é que o linux guarda o meu syslog?

escrevi uma aplicação de teste simples para registar algo num ficheiro de Registo. Estou a usar linux mint e depois de a aplicação ser executada, tento ver o registo com este comando:

tail -n 100 /var/log/messages

mas as mensagens dos ficheiros não existem nem testadas nem nada. Abaixo encontra o meu código. Talvez eu esteja fazendo algo errado, o arquivo não está armazenado lá ou eu preciso ativar o registro no linux mint.

#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;
}
Author: Intel_I7_Inside, 2012-06-11

6 answers

Na minha máquina Ubuntu, consigo ver a saída em {[[0]}.

Tal como referido por outros, a sua saída syslog() seria registada pelo ficheiro /var/log/syslog.
Você pode ver Sistema, Usuário e outros logs em /var/log.

Para mais detalhes: aqui está uma ligação interessante .

 40
Author: TheCottonSilk, 2014-03-14 04:20:10

Além da resposta aceite, é útil saber o seguinte ...

Cada uma dessas funções deve ter páginas de manual associadas a elas.

Se executar man -k syslog (uma pesquisa de palavras-chave nas páginas de manual) irá obter uma lista de páginas de manual que se referem a, ou são cerca de syslog

$ 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

Tem de compreender as secções manuais para aprofundar mais.

Aqui está um excerto da página do homem para o homem, que explica as secções da página do homem. :
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]

Para ler a execução acima

$man man 
Então, se você executar man 3 syslog você terá uma página de manual completa para a função syslog que você ligou em seu código.
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);

Não é uma resposta directa, mas espero que ache isto útil.

 19
Author: Rob Kielty, 2015-07-30 11:55:33

A localização por omissão do registo (rhel) é

Mensagens Gerais:

/var/log/messages

Mensagens de autenticação:

/var/log/secure

Eventos de correio:

/var/log/maillog

Verifique o seu/etc / syslog.conf (ou /etc/syslog-ng.conf depende de qual das instalações do syslog você instalou)

Exemplo:

$ 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 simplifed approach.
*.*                                     /var/log/messages
 16
Author: rkosegi, 2012-06-11 12:00:51

Tem de dizer ao sistema que informação registar e onde colocar a informação. O registo está configurado no cat / etc / rsyslog.ficheiro conf, o reinício do rsyslog para carregar a nova configuração. As regras de registo por omissão estão normalmente num ficheiro / etc / rsyslog.d / 50-default.conf.

 6
Author: david tooke, 2014-07-09 14:13:09

O Syslog () gera uma mensagem de registo, que será distribuída pelo syslogd.

O ficheiro para configurar o syslogd é o /etc/syslog.conf. Este ficheiro irá dizer - lhe onde estão registadas as mensagens.

Como alterar as opções neste ficheiro ? Aqui tens. http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html

 4
Author: Clément, 2012-06-11 11:57:08

O registo é muito configurável no Linux, e poderá querer ver o seu {[[0]} (ou talvez em /etc/rsyslog.d/). Os detalhes dependem do subsistema de registro, e da distribuição.

Veja também os ficheiros em /var/log/ (e talvez execute dmesg para os registos do 'kernel').

 4
Author: Basile Starynkevitch, 2017-09-28 08:27:32