Большинство Unix-программистов привыкло бы к интерфейсу, определенному syslog.h
, и много реализаций (таких как glibc) не имеют никакого реального предела на размер сообщения системного журнала, отправляемого в него, но обычно существует предел на слушание приложения /dev/log
.
Я задаюсь вопросом, знает ли кто-либо способ найти максимальный размер сообщения для системного журнала? Или некоторая хорошая документация того, каков предел на самом деле (или обычно)?
Править:
До сих пор я нашел эти RFCs по теме:
Следует помнить, что syslog - это протокол, что означает, что он устанавливает минимальные требования и дает рекомендации. Я не могу найти источник, но я полагаю, что минимальная длина, которая должна поддерживаться, составляет 1k, а рекомендуется 64k.
Каждая реализация вольна делать то, что она хочет, т.е. если вы хотите иметь максимальный размер 16 МБ и пишете сервер syslog, вы вольны делать это. Я не уверен, зачем вам это нужно, но вы можете это сделать.
Насколько я знаю, не существует стандартного программного
способа определить это, так что сохранение сообщений размером чуть меньше 1k было бы идеальным для переносимости.
Обновление
Пользователь MuMind указал в комментариях, что rsyslog
усекает сообщение на 2097 символах, включая тип журнала / метку времени. Поскольку это широко используемая реализация протокола, это подтверждает, что длина должна быть в пределах 1k - 1.5k для максимальной переносимости.
Честно говоря, единственной причиной для превышения этого значения может быть запись в журнал дополнительных отладочных/аварийных данных; гораздо лучше поместить это куда-нибудь в /var/log
вместо этого, и просто указать, что вы сделали это при обращении к syslog (конечно, есть сценарии, когда вы не можете этого сделать, но многие библиотеки имеют встроенную регистрацию "лучших усилий" для решения этой проблемы).