2013-10-02 6 views
6

Я пытаюсь написать записи разных типов в отдельных файлах журнала из приложения. По причине, которую я пытаюсь выяснить, все записи отображаются во всех файлах журнала. Что я могу делать неправильно?Запись в отдельные файлы журнала

Я хочу только важные записи, чтобы войти в /tmp/log/critical.log и отлаживать записи, чтобы войти в файл /tmp/log/debug.log, в то время как все enteries могут войти в /tmp/log/all.log log файл.

Ниже приведены записи в файле /etc/rsyslog.conf

local0.*            /tmp/log/all.log 
local0.alert           /tmp/log/alert.log 
local0.crit            /tmp/log/critical.log 
local0.debug           /tmp/log/debug.log 
local0.emerg           /tmp/log/emergency.log 
local0.err            /tmp/log/error.log 
local0.info            /tmp/log/info.log 
local0.notice           /tmp/log/notice.log 
local0.warning           /tmp/log/warning.log 

Мой пример с программы написания системного журнала записей ...

#include<syslog.h> 

main() 
{ 
    openlog("myapp",LOG_CONS|LOG_PID|LOG_NDELAY,LOG_LOCAL0); 

    syslog(LOG_EMERG|LOG_LOCAL0,"Emergency",getuid()); 
    syslog(LOG_ALERT|LOG_LOCAL0,"Alert",getuid()); 
    syslog(LOG_CRIT|LOG_LOCAL0,"Critical",getuid()); 
    syslog(LOG_ERR|LOG_LOCAL0,"Error",getuid()); 
    syslog(LOG_WARNING|LOG_LOCAL0,"Warning",getuid()); 
    syslog(LOG_NOTICE|LOG_LOCAL0,"Notice",getuid()); 
    syslog(LOG_INFO|LOG_LOCAL0,"Information",getuid()); 
    syslog(LOG_DEBUG|LOG_LOCAL0,"Debug",getuid()); 

    closelog(); 
} 

ответ

3

Ключевым моментом здесь является то, что (как вы, вероятно, догадались) по умолчанию будет регистрироваться на выбранном вами уровне и ниже. Вы можете изменить это в файле конфигурации syslog, изменив сравнение селектора. По умолчанию, если не указано является >=, вы хотите =:

local0.*             /tmp/log/all.log 
local0.=alert           /tmp/log/alert.log 
local0.=crit            /tmp/log/critical.log 
local0.=debug           /tmp/log/debug.log 
local0.=emerg           /tmp/log/emergency.log 
local0.=err            /tmp/log/error.log 
local0.=info            /tmp/log/info.log 
local0.=notice           /tmp/log/notice.log 
local0.=warning           /tmp/log/warning.log 

Как <, >, <=, >=, вы можете свести на нет сравнения с помощью !.

+1

Привет, Можете ли вы поделиться файлом конфигурации? – ams

+0

Какой конфигурационный файл? Записи, которые необходимо внести в вашу конфигурацию syslog. У меня есть в /etc/rsyslog.d/90-local.conf – ralight

Смежные вопросы