LINUX.ORG.RU

Многстрочный syslog

 ,


0

2

Добрый день! Есть ли возможность многострочного атомарного вывода в syslog? Что-то вроде

syslog_start(level);
syslog_message(s1);
syslog_message(s2);
syslog_message(s3);
syslog_message(s4);
for (int i=0;i<10;i++) {
    syslog_message(s[i]);
}
syslog_end();
При этом все сообщения между start & end превращаются в одно сообщение, не разбиваются сообщениями из других потоков итд. Или надо что-то свое городить с накоплением в буфере, а потом выплевывать?

Или надо что-то свое городить с накоплением в буфере, а потом выплевывать?

Ну да можно так.

char buf0[] = "message";
char buf1[] = "message";
syslog ( 0, "%s\n%s", buf0, buf1 );
man 3 syslog - покажет описание фукнции.
Как видно из примера все буферы в один не надо заготавливать, все буферы можно в syslog отправить как в printf.

u0atgKIRznY5 ()
Ответ на: комментарий от Deleted

Там страдания вызваны во многом косяками Erlang и его инфраструктуры. Мы даже с однострочными записями в лог запарились.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от vromanov

Как знаете. man 3 syslog за один вызов все сообщения может отправить в syslog.

u0atgKIRznY5 ()

http://blog.gerhards.net/2013/09/imfile-multi-line-messages.html

That industry standard protocol uses LF as a frame delimiter. This means a syslog message is considered finished when a LF is seen and everything after the LF is a new message. Unfortunately, the protocol does not provide a special escape mechanism for embedded LFs. This makes it simply impossible to correctly transmit messages with embedded LFs via plain tcp syslog (for more information, see RFC6587, section 3.4).

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.