# [RISOLTO]configurazione syslog-ng 3.0.4

## GoraNz

Ciao a tutti! Oggi mi sono dedicato alla configurazione del demone syslog-ng /logrotate e ho riscontrato dei problemi nella configurazione. Nel particolare, ho riesumato un vecchio syslog-ng.conf che usavo con una versione precedente di syslog-ng e nello startare il demone mi da il seguente errore:

```
syntax error in /etc/syslog-ng/syslog-ng.conf at line 21.

syslog-ng documentation: http://www.balabit.com/support/documentation/?product=syslog-ng

mailing list: https://lists.balabit.hu/mailman/listinfo/syslog-ng

 * Configuration error. Please fix your configfile (/etc/syslog-ng/syslog-ng.conf)       
```

in particolare la linea 21 in questione è la seguente:

```
destination syslog { file("/var/log/syslog"); }; 
```

alla quale sono associate naturalmente le altre relative alle flags e ai filtri:

```
filter f_syslog { not facility(authpriv, mail); };

log { source(src); filter(f_syslog); destination(syslog); };

```

ho cercato nella documentazione ufficiale suggerita dall'errore ma non c'è nulla in merito al syslog se non il fatto che può essere usato per ricevere log da remoto (se ho capito bene)..ora commentando queste righe il demone parte senza problemi ma ho paura che, commentandole, i syslog che venivano registrati dalla versione precedente appunto non vengano loggati. Ora mi chiedo è possibile che i syslog in questione abbiano cambiato destinazione e bisogna quindi riscrivere queste righe in modo diverso? vi posto comunque il file di configurazione completo e vi ringrazio anticipatamente per le risposte.

```
@version: 3.0

options {

        chain_hostnames(no);

        # The default action of syslog-ng is to log a STATS line

        # to the file every 10 minutes.  That's pretty ugly after a while.

        # Change it to every 12 hours so you get a nice daily update of

        # how many messages syslog-ng missed (0).

        #stats_freq(43200);

};

source src {

    unix-stream("/dev/log" max-connections(256));

    internal();

};

source kernsrc { file("/proc/kmsg"); };

# define destinations

destination authlog { file("/var/log/auth.log"); };

destination syslog { file("/var/log/syslog"); };

destination cron { file("/var/log/cron.log"); };

destination daemon { file("/var/log/daemon.log"); };

destination kern { file("/var/log/kern.log"); };

destination lpr { file("/var/log/lpr.log"); };

destination user { file("/var/log/user.log"); };

destination mail { file("/var/log/mail.log"); };

destination mailinfo { file("/var/log/mail.info"); };

destination mailwarn { file("/var/log/mail.warn"); };

destination mailerr { file("/var/log/mail.err"); };

destination newscrit { file("/var/log/news/news.crit"); };

destination newserr { file("/var/log/news/news.err"); };

destination newsnotice { file("/var/log/news/news.notice"); };

destination debug { file("/var/log/debug"); };

destination messages { file("/var/log/messages"); };

destination console { usertty("root"); };

# By default messages are logged to tty12...

destination console_all { file("/dev/tty12"); };

# ...if you intend to use /dev/console for programs like xconsole

# you can comment out the destination line above that references /dev/tty12

# and uncomment the line below.

#destination console_all { file("/dev/console"); };

# create filters

filter f_authpriv { facility(auth, authpriv); };

filter f_syslog { not facility(authpriv, mail); };

filter f_cron { facility(cron); };

filter f_daemon { facility(daemon); };

filter f_kern { facility(kern); };

filter f_lpr { facility(lpr); };

filter f_mail { facility(mail); };

filter f_user { facility(user); };

filter f_debug { not facility(auth, authpriv, news, mail); };

filter f_messages { level(info..warn)

        and not facility(auth, authpriv, mail, news); };

filter f_emergency { level(emerg); };

filter f_info { level(info); };

filter f_notice { level(notice); };

filter f_warn { level(warn); };

filter f_crit { level(crit); };

filter f_err { level(err); };

filter f_failed { message("failed"); };

filter f_denied { message("denied"); };

# connect filter and destination

log { source(src); filter(f_authpriv); destination(authlog); };

log { source(src); filter(f_syslog); destination(syslog); };

log { source(src); filter(f_cron); destination(cron); };

log { source(src); filter(f_daemon); destination(daemon); };

log { source(kernsrc); filter(f_kern); destination(kern); };

log { source(src); filter(f_lpr); destination(lpr); };

log { source(src); filter(f_mail); destination(mail); };

log { source(src); filter(f_user); destination(user); };

log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };

log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };

log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

log { source(src); filter(f_debug); destination(debug); };

log { source(src); filter(f_messages); destination(messages); };

log { source(src); filter(f_emergency); destination(console); };

# default log

log { source(src); destination(console_all); };

```

Last edited by GoraNz on Tue May 11, 2010 11:46 am; edited 1 time in total

----------

## GoraNz

leggendo questa guida e facendo delle ricerche qua e là su internet, ho trovato dei conf di esempio in cui la variabile "syslog" usata sul mio syslog-ng.conf non viene più usata. Per i log di sistema viene specificata quella relativa a "s_localhost" e la sua destinazione "d_localhost". Sostituendo questa variabile a quella di syslog tutto funziona correttamente. vi posto la configurazione

```
@version: 3.0

options {

        chain_hostnames(no);

        # The default action of syslog-ng is to log a STATS line

        # to the file every 10 minutes.  That's pretty ugly after a while.

        # Change it to every 12 hours so you get a nice daily update of

        # how many messages syslog-ng missed (0).

        #stats_freq(43200);

};

source src {

    unix-stream("/dev/log" max-connections(256));

    internal();

};

source kernsrc { file("/proc/kmsg"); };

# define destinations

destination authlog { file("/var/log/auth.log"); };

destination d_localhost { file("/var/log/syslog"); };

destination cron { file("/var/log/cron.log"); };

destination daemon { file("/var/log/daemon.log"); };

destination kern { file("/var/log/kern.log"); };

destination lpr { file("/var/log/lpr.log"); };

destination user { file("/var/log/user.log"); };

destination mail { file("/var/log/mail.log"); };

destination mailinfo { file("/var/log/mail.info"); };

destination mailwarn { file("/var/log/mail.warn"); };

destination mailerr { file("/var/log/mail.err"); };

destination newscrit { file("/var/log/news/news.crit"); };

destination newserr { file("/var/log/news/news.err"); };

destination newsnotice { file("/var/log/news/news.notice"); };

destination debug { file("/var/log/debug"); };

destination messages { file("/var/log/messages"); };

destination console { usertty("root"); };

# By default messages are logged to tty12...

destination console_all { file("/dev/tty12"); };

# ...if you intend to use /dev/console for programs like xconsole

# you can comment out the destination line above that references /dev/tty12

# and uncomment the line below.

#destination console_all { file("/dev/console"); };

# create filters

filter f_authpriv { facility(auth, authpriv); };

filter f_s_localhost { not facility(authpriv, mail); };

filter f_cron { facility(cron); };

filter f_cron { facility(cron); };

filter f_daemon { facility(daemon); };

filter f_kern { facility(kern); };

filter f_lpr { facility(lpr); };

filter f_mail { facility(mail); };

filter f_user { facility(user); };

filter f_debug { not facility(auth, authpriv, news, mail); };

filter f_messages { level(info..warn)

        and not facility(auth, authpriv, mail, news); };

filter f_emergency { level(emerg); };

filter f_info { level(info); };

filter f_notice { level(notice); };

filter f_warn { level(warn); };

filter f_crit { level(crit); };

filter f_err { level(err); };

filter f_failed { message("failed"); };

filter f_denied { message("denied"); };

# connect filter and destination

log { source(src); filter(f_authpriv); destination(authlog); };

log { source(src); filter(f_s_localhost); destination(d_localhost); };

log { source(src); filter(f_cron); destination(cron); };

log { source(src); filter(f_daemon); destination(daemon); };

log { source(kernsrc); filter(f_kern); destination(kern); };

log { source(src); filter(f_lpr); destination(lpr); };

log { source(src); filter(f_mail); destination(mail); };

log { source(src); filter(f_user); destination(user); };

log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };

log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };

log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

log { source(src); filter(f_debug); destination(debug); };

log { source(src); filter(f_messages); destination(messages); };

log { source(src); filter(f_emergency); destination(console); };

# default log

log { source(src); destination(console_all); };

```

Leggendo il file /var/log/syslog relativo alla nuova variabile, mi sembra che i log siano quelli di sistema (e sono più o meno gli stessi di quando usavo la variabile syslog nella mia vecchia macchina gentoo) ma volevo sapere se le mie deduzioni sono corrette e se veramente "s_localhost" sostituisce il vecchio "syslog". anche perchè ho fatto una ricerca tra i changelog per il pacchetto syslog-ng e non sono citati cambiamenti di questo tipo nella sintassi del syslog-ng.conf..grazie anticipatamente

----------

## Kernel78

Io è da novembre che al lavoro sono un un progetto che sfrutta pesantemente syslog-ng e ho scambiato più mail con i tecnici di balabit che non con i miei parenti  :Laughing: 

Il testo che trovi tra destination, source, filter (e altro) e la parentesi graffa aperta non è altro che un'etichetta, nel tuo caso potresti sostituire:

destination syslog { file("/var/log/syslog"); }; 

con

destination pippoetopolinovannoapaperopoli { file("/var/log/syslog"); }; 

il problema è che dalla versione 3 hanno preferito riservare la parola "syslog" quindi non ti viene ritenuta valida la destination e di conseguenza nemmeno il log in cui viene usata ...

Per sicurezza cambia tutte le etichette che contengono la parola "syslog" con qualcos'altro ...

Non dovresti avere il minimo problema  :Wink: 

La documentazione io la recupero da qui

----------

## GoraNz

grazie della dritta avevo già preso quella documentazione per effettuare la configurazione ma è un bel pò densa quindi ci vuole un pò di studio  :Laughing:  grazie ancora aggiunto il tag risolto

----------

## Kernel78

 *GoraNz wrote:*   

> grazie della dritta avevo già preso quella documentazione per effettuare la configurazione ma è un bel pò densa quindi ci vuole un pò di studio  grazie ancora aggiunto il tag risolto

 

ok, te lo dico per sicurezza ma lo avrai già notato: dalla versione 3.1 la documentazione è stata suddivisa tra la versione OSE e la PE, e le funzionalità sono anche molto differenti ...  :Wink: 

----------

