提交 fc201dfd 编写于 作者: P Peter Eisentraut

Add syslog_split_messages parameter

Reviewed-by: NAndreas Karlsson <andreas@proxel.se>
上级 f4c454e9
......@@ -4333,6 +4333,39 @@ local0.* /var/log/postgresql
</listitem>
</varlistentry>
<varlistentry id="guc-syslog-split-messages" xreflabel="syslog_split_messages">
<term><varname>syslog_split_messages</varname> (<type>boolean</type>)
<indexterm>
<primary><varname>syslog_split_messages</> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
When logging to <application>syslog</> is enabled, this parameter
determines how messages are delivered to syslog. When on (the
default), messages are split by lines, and long lines are split so
that they will fit into 1024 bytes, which is a typical size limit for
traditional syslog implementations. When off, PostgreSQL server log
messages are delivered to the syslog service as is, and it is up to
the syslog service to cope with the potentially bulky messages.
</para>
<para>
If syslog is ultimately logging to a text file, then the effect will
be the same either way, and it is best to leave the setting on, since
most syslog implementations either cannot handle large messages or
would need to be specially configured to handle them. But if syslog
is ultimately writing into some other medium, it might be necessary or
more useful to keep messages logically together.
</para>
<para>
This parameter can only be set in the <filename>postgresql.conf</>
file or on the server command line.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-event-source" xreflabel="event_source">
<term><varname>event_source</varname> (<type>string</type>)
<indexterm>
......
......@@ -107,6 +107,7 @@ char *Log_line_prefix = NULL; /* format for extra log line info */
int Log_destination = LOG_DESTINATION_STDERR;
char *Log_destination_string = NULL;
bool syslog_sequence_numbers = true;
bool syslog_split_messages = true;
#ifdef HAVE_SYSLOG
......@@ -1966,7 +1967,7 @@ write_syslog(int level, const char *line)
*/
len = strlen(line);
nlpos = strchr(line, '\n');
if (len > PG_SYSLOG_LIMIT || nlpos != NULL)
if (syslog_split_messages && (len > PG_SYSLOG_LIMIT || nlpos != NULL))
{
int chunk_nr = 0;
......
......@@ -1642,6 +1642,16 @@ static struct config_bool ConfigureNamesBool[] =
NULL, NULL, NULL
},
{
{"syslog_split_messages", PGC_SIGHUP, LOGGING_WHERE,
gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
NULL
},
&syslog_split_messages,
true,
NULL, NULL, NULL
},
/* End-of-list marker */
{
{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL, NULL
......
......@@ -359,6 +359,7 @@
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
#syslog_sequence_numbers = on
#syslog_split_messages = on
# This is only relevant when logging to eventlog (win32):
#event_source = 'PostgreSQL'
......
......@@ -398,6 +398,7 @@ extern char *Log_line_prefix;
extern int Log_destination;
extern char *Log_destination_string;
extern bool syslog_sequence_numbers;
extern bool syslog_split_messages;
/* Log destination bitmap */
#define LOG_DESTINATION_STDERR 1
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册