Hata Raporlama ve Logging
Düzeltme Öner

Hata Raporlama ve Logging

Where to Log

log_destination

type: string default: stderr context: sighup
<p>PostgreSQL supports several methods for logging server messages, including stderr, csvlog and syslog. On Windows, eventlog is also supported. Set this parameter to a list of desired log destinations separated by commas. The default is to log to stderr only. This parameter can only be set in the postgresql.conf file or on the server command line.</p><p>If csvlog is included in log_destination, log entries are output in comma separated value (CSV) format, which is convenient for loading logs into programs. See runtime-config-logging-csvlog for details. logging_collector must be enabled to generate CSV-format log output.</p><p>When either stderr or csvlog are included, the file current_logfiles is created to record the location of the log file(s) currently in use by the logging collector and the associated logging destination. This provides a convenient way to find the logs currently in use by the instance. Here is an example of this file’s content:stderr log/postgresql.logcsvlog log/postgresql.csvcurrent_logfiles is recreated when a new log file is created as an effect of rotation, and when log_destination is reloaded. It is removed when neither stderr nor csvlog are included in log_destination, and when the logging collector is disabled.</p><p>On most Unix systems, you will need to alter the configuration of your system’s syslog daemon in order to make use of the syslog option for log_destination. PostgreSQL can log to syslog facilities LOCAL0 through LOCAL7 (see syslog_facility), but the default syslog configuration on most platforms will discard all such messages. You will need to add something like:local0.* /var/log/postgresql to the syslog daemon’s configuration file to make it work.</p><p>On Windows, when you use the eventlog option for log_destination, you should register an event source and its library with the operating system so that the Windows Event Viewer can display event log messages cleanly. See event-log-registration for details.</p>
PostgreSQL, sunucu mesajlarını günlüğe kaydetmek için stderr, csvlog ve syslog yöntemlerini destekler. Windows’ta olay günlüğü de desteklenmektedir. Bu parametre değeri, virgülle ayrılmış istenen günlük hedeflerinin listesi şeklindedir. Varsayılan, yalnızca stderr’de günlüğe yazmadır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

log_destination listesi csvlog içeriyorsa; günlük kayıtları, günlükleri programlara yüklemek için uygun olan virgülle ayrılmış değerler (comma separated value-CSV) formatında yazılır. Ayrıntılar için CSV-Format Log Çıktısı Kullanma bölümüne bakın. CSV formatında günlük çıktısı oluşturmak için logging_collector etkinleştirilmelidir.

log_destination listesi stderr veya csvlog içerdiğinde; logging collector tarafından kullanımda olan günlük dosyalarının konumunu ve ilişkili günlük kaydı hedefini kaydetmek için current_logfiles dosyası oluşturulur. Bu, veritabanı tarafından kullanımda olan günlükleri bulmak için kullanışlı bir yol sağlar. Bu dosyanın içeriğinin bir örneği:
stderr log/postgresql.log
csvlog log/postgresql.csv
current_logfiles, rotasyonun bir etkisi olarak yeni bir günlük dosyası oluşturulduğunda ve log_destination yeniden yüklendiğinde tekrar oluşturulur. current_logfiles, log_destination stderr veya csvlog içermediğinde ve logging collector devre dışı bırakıldığında kaldırılır.

logging_collector

type: bool default: off context: postmaster restart: Gerektirir
<p>This parameter enables the logging collector, which is a background process that captures log messages sent to stderr and redirects them into log files. This approach is often more useful than logging to syslog, since some types of messages might not appear in syslog output. (One common example is dynamic-linker failure messages; another is error messages produced by scripts such as archive_command.) This parameter can only be set at server start.</p><p>It is possible to log to stderr without using the logging collector; the log messages will just go to wherever the server’s stderr is directed. However, that method is only suitable for low log volumes, since it provides no convenient way to rotate log files. Also, on some platforms not using the logging collector can result in lost or garbled log output, because multiple processes writing concurrently to the same log file can overwrite each other’s output.</p><p>The logging collector is designed to never lose messages. This means that in case of extremely high load, server processes could be blocked while trying to send additional log messages when the collector has fallen behind. In contrast, syslog prefers to drop messages if it cannot write them, which means it may fail to log some messages in such cases but it will not block the rest of the system.</p>
Bu parametre, stderr’e gönderilen günlük mesajlarını yakalayıp bunları günlük dosyalarına yönlendiren bir arka plan süreci olan logging collector’ı etkinleştirir. Bu yaklaşım, bazı mesaj türleri syslog çıktısında görünmeyebileceğinden genellikle syslog’a kaydetmekten daha kullanışlıdır. Dynamic-linker hata mesajları, archive_command gibi komut dosyaları tarafından üretilen hata mesajları genel örneklerdir. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir.

log_directory

type: string default: log context: sighup
<p>When logging_collector is enabled, this parameter determines the directory in which log files will be created. It can be specified as an absolute path, or relative to the cluster data directory. This parameter can only be set in the postgresql.conf file or on the server command line. The default is log.</p>
Bu parametre logging_collector etkinleştirildiğinde günlük dosyalarının oluşturulacağı dizini belirler. Mutlak bir yol olarak veya küme veri dizinine ( data directory ) göre belirtilebilir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. Öntanımlı değeri log‘dur.

log_filename

type: string default: postgresql-%Y-%m-%d_%H%M%S.log context: sighup
<p>When logging_collector is enabled, this parameter sets the file names of the created log files. The value is treated as a strftime pattern, so %-escapes can be used to specify time-varying file names. (Note that if there are any time-zone-dependent %-escapes, the computation is done in the zone specified by log_timezone.) The supported %-escapes are similar to those listed in the Open Group’s strftime specification. Note that the system’s strftime is not used directly, so platform-specific (nonstandard) extensions do not work. The default is postgresql-%Y-%m-%d_%H%M%S.log.</p><p>If you specify a file name without escapes, you should plan to use a log rotation utility to avoid eventually filling the entire disk. In releases prior to 8.4, if no % escapes were present, PostgreSQL would append the epoch of the new log file’s creation time, but this is no longer the case.</p><p>If CSV-format output is enabled in log_destination, .csv will be appended to the timestamped log file name to create the file name for CSV-format output. (If log_filename ends in .log, the suffix is replaced instead.)</p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre logging_collector etkinleştirildiğinde oluşturulan günlük dosyalarının adlarını ayarlar. Değer strftime kalıbı olarak işlenir. Zamanla değişen dosya adları % kaçışları ile belirtilir. Saat dilimine bağlı % kaçışları varsa, hesaplama log_timezone ile belirtilen bölgede yapılır. Doğrudan sistemin strft zamanı kullanılmadığı için platform spesifik uzantıları çalışmaz. Varsayılan, postgresql-%Y-%m-%d_%H%M%S.log şeklindedir.

log_destination‘da CSV formatında çıktı etkinleştirildiğinde zaman damgalı günlük dosyası adına .csv eklenir.

Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

log_file_mode

type: integer default: 600 min: 0 max: 511 context: sighup
<p>On Unix systems this parameter sets the permissions for log files when logging_collector is enabled. (On Microsoft Windows this parameter is ignored.) The parameter value is expected to be a numeric mode specified in the format accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)</p><p>The default permissions are 0600, meaning only the server owner can read or write the log files. The other commonly useful setting is 0640, allowing members of the owner’s group to read the files. Note however that to make use of such a setting, you’ll need to alter log_directory to store the files somewhere outside the cluster data directory. In any case, it’s unwise to make the log files world-readable, since they might contain sensitive data.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre, logging_collector etkinleştirildiğinde, Unix sistemlerde günlük dosyalarının izinlerini ayarlar. (Windows’da bu parametre yoksayılır.) Parametre değerinin, chmod ve umask sistem çağrıları tarafından kabul edilen formatta sayısal bir mod olması beklenir.

Varsayılan izinler 0600‘dır, yani yalnızca sunucu sahibi günlük dosyalarını okuyabilir ve yazabilir. Bir diğer yaygın kullanım ayarı 0640‘tır ve sahip grubunun üyelerinin dosyaları okumasına izin verir. Böyle bir ayarı kullanmak için ve dosyaları küme veri dizininin dışında bir yerde depolamak için log_directory‘yi değiştirmeniz gerekecektir. Her durumda, hassas veriler içerdiği için günlük dosyalarını herkes tarafından okunabilir hale getirmek akıllıca değildir.

Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

log_rotation_age

type: integer default: 1 d min: 0 max: 35791394 unit: min context: sighup
<p>When logging_collector is enabled, this parameter determines the maximum amount of time to use an individual log file, after which a new log file will be created. If this value is specified without units, it is taken as minutes. The default is 24 hours. Set to zero to disable time-based creation of new log files. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre, logging_collector etkinleştirildiğinde tek bir günlük dosyasının maksimum kullanım süresini belirler ve bu değerden sonra yeni bir günlük dosyası oluşturulur. Bu değer birimsiz belirtilirse dakika olarak alınır. Varsayılan 24 saattir. Yeni günlük dosyalarının zamana dayalı olarak oluşturulmasını devre dışı bırakmak için 0 olarak ayarlayın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

log_rotation_size

type: integer default: 10 MB min: 0 max: 2097151 unit: kB context: sighup
<p>When logging_collector is enabled, this parameter determines the maximum size of an individual log file. After this amount of data has been emitted into a log file, a new log file will be created. If this value is specified without units, it is taken as kilobytes. The default is 10 megabytes. Set to zero to disable size-based creation of new log files. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre, logging_collector etkinleştirildiğinde tek bir günlük dosyasının maksimum boyutunu belirler. Bu miktarda veri bir günlük dosyasına gönderildikten sonra, yeni bir günlük dosyası oluşturulacaktır. Bu değer birimsiz belirtilirse kilobayt olarak alınır. Öntanımlı değeri 10 megabayttır. Yeni günlük dosyalarının boyuta dayalı olarak oluşturulmasını devre dışı bırakmak için 0 olarak ayarlayın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

log_truncate_on_rotation

type: bool default: off context: sighup
<p>When logging_collector is enabled, this parameter will cause PostgreSQL to truncate (overwrite), rather than append to, any existing log file of the same name. However, truncation will occur only when a new file is being opened due to time-based rotation, not during server startup or size-based rotation. When off, pre-existing files will be appended to in all cases. For example, using this setting in combination with a log_filename like postgresql-%H.log would result in generating twenty-four hourly log files and then cyclically overwriting them. This parameter can only be set in the postgresql.conf file or on the server command line.</p><p>Example: To keep 7 days of logs, one log file per day named server_log.Mon, server_log.Tue, etc, and automatically overwrite last week’s log with this week’s log, set log_filename to server_log.%a, log_truncate_on_rotation to on, and log_rotation_age to 1440.</p><p>Example: To keep 24 hours of logs, one log file per hour, but also rotate sooner if the log file size exceeds 1GB, set log_filename to server_log.%H%M, log_truncate_on_rotation to on, log_rotation_age to 60, and log_rotation_size to 1000000. Including %M in log_filename allows any size-driven rotations that might occur to select a file name different from the hour’s initial file name.</p>
Bu parametre, logging_collector etkinleştirildiğinde PostgreSQL günlük dosyalarına ekleme yapmak yerine mevcut günlük dosyasını truncate (üzerine yazmak) eder. Truncate yalnızca zamana dayalı rotasyon sebepli yeni dosya açılırken meydana gelir, sunucu başlangıcında veya boyuta dayalı rotasyon sırasında değil. Kapalı olduğunda, var olan dosyalara her durumda ekleme yapılacaktır. Örneğin, bu ayarı postgresql-%H.log gibi bir log_filename ile birlikte kullanılması 24 saatlik günlük dosyalarının oluşturulup ve döngüsel olarak bunların üzerine yazılmasıyla sonuçlanır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

Örnek: 7 günlük server_log.Mon, server_log.Tue, vb. şekilde günlük dosyaları tutmak ve geçen haftanın günlüğünün üzerine bu haftanın günlüğünü otomatik olarak yazmak için, log_filename değerini server_log.%a, log_truncate_on_rotation = on ve log_rotation_age = 1440 olarak ayarlayın.

Örnek: Her saatte bir günlük dosyası olarak 24 saatlik günlükler ve günlük dosyası boyutu 1 GB’ı aşarsa daha erken rotasyon için log_filename değerini server_log.%H%M, log_truncate_on_rotation = on, log_rotation_age = 60 ve log_rotation_size = 1000000 olarak ayarlayın. log_filename‘in %M içermesi, meydana gelebilecek boyuta dayalı rotasyonlarda mevcut saatlik dosya adından farklı bir dosya adı seçmek içindir.

syslog_facility

type: enum default: local0 context: sighup values: [local0, local1, local2, local3, local4, local5, local6, local7]
<p>When logging to syslog is enabled, this parameter determines the syslogfacility to be used. You can choose from LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7; the default is LOCAL0. See also the documentation of your system’s syslog daemon. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre syslog’da günlük kaydı etkinleştirildiğinde kullanılacak syslog ‘facility’ belirler. LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7 arasından seçim yapabilirsiniz. Öntanımlı değeri LOCAL0‘dır. Ayrıca sisteminizin syslog daemon belgelerine bakın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

syslog_ident

type: string default: postgres context: sighup
<p>When logging to syslog is enabled, this parameter determines the program name used to identify PostgreSQL messages in syslog logs. The default is postgres. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre syslog’da günlük kaydı etkinleştirildiğinde, syslog günlüklerinde PostgreSQL mesajlarını tanımlamak için kullanılan program adını belirler. Varsayılan, postgres‘tir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

syslog_sequence_numbers

type: bool default: on context: sighup
<p>When logging to syslog and this is on (the default), then each message will be prefixed by an increasing sequence number (such as [2]). This circumvents the — last message repeated N times — suppression that many syslog implementations perform by default. In more modern syslog implementations, repeated message suppression can be configured (for example, $RepeatedMsgReduction in rsyslog), so this might not be necessary. Also, you could turn this off if you actually want to suppress repeated messages.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>
syslog’da günlük kaydı etkinleştirildiğinde ve bu parametre on (varsayılan) ise her mesajın önüne artan bir sıra numarası eklenir ([2] gibi). Bu, birçok syslog uygulamasının varsayılan olarak gerçekleştirdiği ‘— last message repeated N times —’ bastırmasını engeller. Daha modern syslog uygulamalarında tekrarlanan mesaj bastırma yapılandırılabildiğinde bu gerekli olmayabilir. Tekrarlanan mesajları bastırmak istiyorsanız bunu kapatabilirsiniz.

Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

syslog_split_messages

type: bool default: on context: sighup
<p>When logging to 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.</p><p>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.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bu parametre syslog’da günlük kaydı etkinleştirildiğinde mesajların syslog’a nasıl teslim edileceğini belirler. on (varsayılan) ayarında, mesajlar satırlara bölünür ve uzun satırlar, geleneksel syslog uygulamaları için tipik boyut sınırı olan 1024 bayta sığacak şekilde bölünür. off ayarında, PostgreSQL sunucusu günlük mesajları syslog servisine olduğu gibi teslim edilir ve büyük mesajlarla başa çıkmak syslog servisine bırakılır.

Eğer syslog bir metin dosyasına kaydediliyorsa etki her iki şekilde de aynı olacaktır ve çoğu syslog uygulaması büyük iletileri işleyemeyeceği veya bunları işlemek için özel olarak yapılandırılması gerekeceği için en iyisi ayarı açık bırakmaktır. syslog nihayetinde başka bir ortama yazıyorsa, mesajları mantıksal olarak bir arada tutmak gerekli veya daha yararlı olabilir.

Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

event_source

type: string default: PostgreSQL context: postmaster restart: Gerektirir
<p>When logging to event log is enabled, this parameter determines the program name used to identify PostgreSQL messages in the log. The default is PostgreSQL. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
event log’a loglama etkinleştirildiğinde bu parametre, günlükteki PostgreSQL mesajlarını tanımlamak için kullanılan program adını belirler. Varsayılan, PostgreSQL‘dir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

When to Log

log_min_messages

type: enum default: warning context: superuser values: [debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic]
<p>Controls which message levels are written to the server log. Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. Each level includes all the levels that follow it. The later the level, the fewer messages are sent to the log. The default is WARNING. Note that LOG has a different rank here than in client_min_messages. Only superusers can change this setting.</p>
Sunucu günlüğüne hangi mesaj seviyelerinin yazılacağını kontrol eder. Geçerli değerler DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL ve PANIC‘dir. Her seviye, onu takip eden tüm seviyeleri kapsar. Seviye ne kadar düşük olursa, günlüğe o kadar az mesaj gönderilir. Varsayılan, WARNING‘dır. LOG‘un burada client_min_messages‘dakinden farklı bir sıralamada olduğunu unutmayın. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_min_error_statement

type: enum default: error context: superuser values: [debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic]
<p>Controls which SQL statements that cause an error condition are recorded in the server log. The current SQL statement is included in the log entry for any message of the specified severity or higher. Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. The default is ERROR, which means statements causing errors, log messages, fatal errors, or panics will be logged. To effectively turn off logging of failing statements, set this parameter to PANIC. Only superusers can change this setting.</p>
Hata durumuna neden olan SQL ifadelerinin sunucu günlüğüne kaydedilmesini kontrol eder. Verilen seviyede veya üzerinde hata oluşturan tüm SQL ifadeleri günlüğe kaydedilir. Geçerli değerler DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL ve PANIC‘dir. Varsayılan ERROR‘dır. Bu hataya, günlük mesajlarına, fatal error’lara ve paniklere neden olan SQL ifadelerinin günlüğe kaydedileceği anlamına gelir. Başarısız ifadelerin günlüğe kaydedilmesini kapatmak için bu parametreyi PANIC olarak ayarlayın. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_min_duration_statement

type: integer default: -1 min: -1 max: 2147483647 unit: ms context: superuser
<p>Causes the duration of each completed statement to be logged if the statement ran for at least the specified amount of time. For example, if you set it to 250ms then all SQL statements that run 250ms or longer will be logged. Enabling this parameter can be helpful in tracking down unoptimized queries in your applications. If this value is specified without units, it is taken as milliseconds. Setting this to zero prints all statement durations. -1 (the default) disables logging statement durations. Only superusers can change this setting.</p><p>This overrides guc-log-min-duration-sample, meaning that queries with duration exceeding this setting are not subject to sampling and are always logged.</p><p>For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently.</p><p>When using this option together with log_statement, the text of statements that are logged because of log_statement will not be repeated in the duration log message. If you are not using syslog, it is recommended that you log the PID or session ID using log_line_prefix so that you can link the statement message to the later duration message using the process ID or session ID.</p>
En az bu parametrede belirtilen sürede tamamlanan tüm ifadeleri günlüğe kaydeder. Örneğin, 250 ms ayarı, 250 ms ve daha uzun süre çalışan tüm SQL ifadelerini günlüğe kaydeder. Bu parametrenin etkinleştirilmesi, uygulamalarınızdaki optimize edilmemiş sorguların izlenmesinde yardımcı olur. Bu değer birimsiz belirtilirse milisaniye olarak alınır. Bunu 0 olarak ayarlamak, çalışan tüm SQL ifade sürelerini yazdırır. -1 (varsayılan) değeri bu davranışı devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Bu parametre, log_min_duration_sample parametresini geçersiz kılar, yani bu ayarı aşan süreye sahip sorgular örneklemeye tabi değildir ve her zaman günlüğe kaydedilir.

Genişletilmiş sorgu protokolü kullanan istemciler için Parse, Bind ve Execute adımlarının süreleri bağımsız olarak günlüğe kaydedilir.

log_min_duration_sample

type: integer default: -1 min: -1 max: 2147483647 unit: ms context: superuser
<p>Allows sampling the duration of completed statements that ran for at least the specified amount of time. This produces the same kind of log entries as log_min_duration_statement, but only for a subset of the executed statements, with sample rate controlled by guc-log-statement-sample-rate. For example, if you set it to 100ms then all SQL statements that run 100ms or longer will be considered for sampling. Enabling this parameter can be helpful when the traffic is too high to log all queries. If this value is specified without units, it is taken as milliseconds. Setting this to zero samples all statement durations. -1 (the default) disables sampling statement durations. Only superusers can change this setting.</p><p>This setting has lower priority than log_min_duration_statement, meaning that statements with durations exceeding log_min_duration_statement are not subject to sampling and are always logged.</p><p>Other notes for log_min_duration_statement apply also to this setting.</p>
En az belirtilen süre boyunca çalışan tamamlanmış ifadelerin süresinin örneklenmesine (sampling) edilmesine izin verir. log_statement_sample_rate tarafından kontrol edilen örnekleme oranıyla yürütülen ifadelerin bir alt kümesi için log_min_duration_statement ile aynı türden günlük girişleri üretir. Örneğin, 100 ms ayarları, 100 ms ve daha uzun süre çalışan tüm SQL ifadeleri örnekleme için dikkate alacaktır. Bu parametrenin etkinleştirilmesi, tüm sorguları günlüğe kaydedemeyecek kadar yüksek trafik olduğunda faydalı olabilir. Bu değer birimsiz belirtilirse milisaniye olarak alınır. Bunu 0 olarak ayarlamak tüm ifade sürelerini örnekler. -1 (varsayılan) örnekleme ifadesi sürelerini devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Bu ayar, log_min_duration_statement‘tan daha düşük önceliğe sahiptir. log_min_duration_statement‘ı aşan süredeki ifadeler örneklemeye tabi değildir ve her zaman günlüğe kaydedilir.

log_min_duration_statement için verilen notlar bu ayar için de geçerlidir.

log_statement_sample_rate

type: real default: 1 min: 0 max: 1 context: superuser
<p>Determines the fraction of statements with duration exceeding log_min_duration_sample that will be logged. Sampling is stochastic, for example 0.5 means there is statistically one chance in two that any given statement will be logged. The default is 1.0, meaning to log all sampled statements. Setting this to zero disables sampled statement-duration logging, the same as setting log_min_duration_sample to -1. Only superusers can change this setting.</p>
Günlüğe kaydedilecek log_min_duration_sample‘ı aşan süredeki ifadelerin oranını belirler. Örnekleme stokastiktir; örneğin 0.5, istatistiksel olarak herhangi bir ifadenin günlüğe kaydedilme ihtimalinin 1/2 olduğu anlamına gelir. Varsayılan değer 1.0’dır, tüm örneklenmiş ifadeler günlüğe kaydedilir. Bunu 0 olarak ayarlamak örneklenmiş ifade süresi günlük kaydını devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_transaction_sample_rate

type: real default: 0 min: 0 max: 1 context: superuser
<p>Sets the fraction of transactions whose statements are all logged, in addition to statements logged for other reasons. It applies to each new transaction regardless of its statements’ durations. Sampling is stochastic, for example 0.1 means there is statistically one chance in ten that any given transaction will be logged. log_transaction_sample_rate can be helpful to construct a sample of transactions. The default is 0, meaning not to log statements from any additional transactions. Setting this to 1 logs all statements of all transactions. Only superusers can change this setting.</p><p>Like all statement-logging options, this option can add significant overhead.</p>
Diğer nedenlerle günlüğe kaydedilen ifadelere ek olarak, tüm ifadeleri günlüğe kaydedilen transaction’ların oranını ayarlar. İfadelerinin sürelerine bakılmaksızın her yeni transaction için geçerlidir. Örnekleme stokastiktir, örneğin 0.1, istatistiksel olarak herhangi bir işlemin günlüğe kaydedilme ihtimalinin onda bir olduğu anlamına gelir. log_transaction_sample_rate, transaction’ların örneğini oluşturmada yardımcı olabilir. Varsayılan 0’dır, herhangi bir ek transaction’dan gelen ifadelerin günlüğe kaydedilmemesi anlamına gelir. Bunu 1 olarak ayarlamak, tüm transaction’ların tüm ifadelerini günlüğe kaydeder. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Aşağıda verilen tabloda, PostgreSQL tarafından kullanılan mesaj önem seviyeleri açıklanmıştır. Günlük çıktısı, syslog veya Windows olay günlüğüne gönderilirdiğinde önem seviyeleri tabloda gösterildiği şekilde çevrilir.

Seviye Kullanım syslog eventlog
DEBUG1 .. DEBUG5 Geliştiriciler tarafından kullanılmak üzere sırayla daha ayrıntılı bilgi sağlar. DEBUG INFORMATION
INFO Kullanıcı tarafından dolaylı olarak talep edilen bilgileri sağlar. ör, VACUUM VERBOSE çıktısı. INFO INFORMATION
NOTICE Kullanıcılara yardımcı olabilecek bilgiler sağlar. ör, uzun tanımlayıcıların truncation’ına dair bildirim. NOTICE INFORMATION
WARNING Olası sorunlara ilişkin uyarılar verir. NOTICE WARNING
ERROR Mevcut komutun iptal edilmesine neden olan hatayı bildirir. WARNING ERROR
LOG Yöneticilere ilgilendikleri bilgileri raporlar. ör, checkpoint aktivitesi INFO INFORMATION
FATAL Mevcut oturumun iptal edilmesine neden olan hatayı bildirir. ERR ERROR
PANIC Tüm veritabanı oturumlarının iptal edilmesine neden olan hatayı bildirir. CRIT ERROR

What to Log

application_name

type: string context: user
<p>The application_name can be any string of less than NAMEDATALEN characters (64 characters in a standard build). It is typically set by an application upon connection to the server. The name will be displayed in the pg_stat_activity view and included in CSV log entries. It can also be included in regular log entries via the log_line_prefix parameter. Only printable ASCII characters may be used in the application_name value. Other characters will be replaced with question marks (?).</p>
application_name, NAMEDATALEN sabitinden daha az karakterde herhangi bir string olabilir (standart build’de 64 karakter). Genellikle sunucuya bağlanan uygulama tarafından ayarlanır. Bu isim, pg_stat_activity view’ında görüntülenecek ve CSV günlük girişlerine dahil edilecektir. log_line_prefix parametresi ile normal günlük girişlerine de dahil edilebilir. Bu parametre değerinde yalnızca yazdırılabilir ASCII karakterleri kullanılabilir. Diğer karakterler soru işaretleriyle (?) değiştirilecektir.

debug_print_parse (boolean) / debug_print_rewritten (boolean) / debug_print_plan (boolean)

type: bool default: off context: user
<p>These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default they will appear in the server log but will not be sent to the client. You can change that by adjusting client_min_messages and/or log_min_messages. These parameters are off by default.</p>
type: bool default: off context: user
<p>These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default they will appear in the server log but will not be sent to the client. You can change that by adjusting client_min_messages and/or log_min_messages. These parameters are off by default.</p>
type: bool default: off context: user
<p>These parameters enable various debugging output to be emitted. When set, they print the resulting parse tree, the query rewriter output, or the execution plan for each executed query. These messages are emitted at LOG message level, so by default they will appear in the server log but will not be sent to the client. You can change that by adjusting client_min_messages and/or log_min_messages. These parameters are off by default.</p>
Bu parametreler, çeşitli hata ayıklama çıktılarının yayınlanmasını sağlar. İlgili parametre ayarlandığında; parse tree, query rewriter çıktısı ve execution planları yazılır. Bu mesajlar LOG mesajı seviyesinde yayınlanır ve sunucu günlüğünde görünürler ancak istemciye gönderilmezler. Bunu, client_min_messages ve / veya log_min_messages ayarlayarak değiştirebilirsiniz. Bu parametreler varsayılan olarak kapalıdır.

debug_pretty_print

type: bool default: on context: user
<p>When set, debug_pretty_print indents the messages produced by debug_print_parse, debug_print_rewritten, or debug_print_plan. This results in more readable but much longer output than the compact format used when it is off. It is on by default.</p>
Bu parametre ayarlandığında, debug_pretty_print, debug_print_parse, debug_print_rewritten ve debug_print_plan tarafından üretilen mesajları girintiler. Bu parametre kapalıyken sağlanan ‘kompakt’ format daha okunabilirdir ancak çok daha uzun çıktılar verir. Varsayılan olarak açıktır.

log_checkpoints

type: bool default: off context: sighup
<p>Causes checkpoints and restartpoints to be logged in the server log. Some statistics are included in the log messages, including the number of buffers written and the time spent writing them. This parameter can only be set in the postgresql.conf file or on the server command line. The default is off.</p>
checkpoint ve restartpoint noktalarının sunucu günlüğüne kaydedilmesini sağlar. Yazılan arabellek sayısı ve bunları yazmak için harcanan zaman dahil olmak üzere bazı istatistikler günlük mesajlarına dahil edilir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. Varsayılan olarak kapalıdır.

log_connections

type: bool default: off context: super user-backend
<p>Causes each attempted connection to the server to be logged, as well as successful completion of client authentication. Only superusers can change this parameter at session start, and it cannot be changed at all within a session. The default is off.</p><p>Some client programs, like psql, attempt to connect twice while determining if a password is required, so duplicate connection received messages do not necessarily indicate a problem.</p>
Her başarılı bağlantı girişimini günlüğe kaydeder. Bu parametre oturum başlangıcında yalnızca süper kullanıcılar tarafından ayarlanabilir ve oturum içinde değiştirilemez. Varsayılan olarak kapalıdır.

log_disconnections

type: bool default: off context: su peruser-backend
<p>Causes session terminations to be logged. The log output provides information similar to log_connections, plus the duration of the session. Only superusers can change this parameter at session start, and it cannot be changed at all within a session. The default is off.</p>
Oturum sonlandırmalarının günlüğe kaydedilmesini kontrol eder. Günlük çıktısı, log_connections ile benzer olmakla birlikte oturum süresini de içerir. Bu parametre yalnızca süper kullanıcılar tarafından oturum başlangıcında değiştirebilir ve bir oturum içinde hiç değiştirilemez. Varsayılan olarak kapalıdır.

log_duration

type: bool default: off context: superuser
<p>Causes the duration of every completed statement to be logged. The default is off. Only superusers can change this setting.</p><p>For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently.</p><p>The difference between enabling log_duration and setting log_min_duration_statement to zero is that exceeding log_min_duration_statement forces the text of the query to be logged, but this option doesn’t. Thus, if log_duration is on and log_min_duration_statement has a positive value, all durations are logged but the query text is included only for statements exceeding the threshold. This behavior can be useful for gathering statistics in high-load installations.</p>
Tamamlanan ifadelerin süresinin günlüğe kaydedilmesini kontrol eder. Varsayılan olarak kapalıdır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Extended sorgu protokolü kullanan istemciler için Parse, Bind ve Execute adım süreleri bağımsız olarak günlüğe kaydedilir.

log_error_verbosity

type: enum default: default context: superuser values: [terse, default, verbose]
<p>Controls the amount of detail written in the server log for each message that is logged. Valid values are TERSE, DEFAULT, and VERBOSE, each adding more fields to displayed messages. TERSE excludes the logging of DETAIL, HINT, QUERY, and CONTEXT error information. VERBOSE output includes the SQLSTATE error code (see also errcodes-appendix) and the source code file name, function name, and line number that generated the error. Only superusers can change this setting.</p>
Kaydedilen mesajların sunucu günlüğüne yazılan ayrıntı miktarını kontrol eder. Bu parametre için geçerli değerler TERSE, DEFAULT ve VERBOSE‘dur. Her biri görüntülenen mesajlara daha fazla alan ekler. TERSE; DETAIL, HINT, QUERY ve CONTEXT hata bilgilerinin günlüğe kaydını dahil etmez. VERBOSE çıktısı, SQLSTATE hata kodunu ve hatayı oluşturan kaynak kod dosyası adını, işlev adını ve satır numarasını içerir. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_hostname

type: bool default: off context: sighup
<p>By default, connection log messages only show the IP address of the connecting host. Turning this parameter on causes logging of the host name as well. Note that depending on your host name resolution setup this might impose a non-negligible performance penalty. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Bağlantı günlüğü mesajları varsayılan olarak yalnızca bağlanan host’un IP adresini gösterir. Bu parametrenin açılması, host adının da günlüğe kaydedilmesini sağlar. Bu, host adı çözümleme kurulumuna bağlı olarak performans kaybı getirebilir. Bu parametre yalnızca postgresql.conf dosyasında ve sunucu komut satırından ayarlanabilir.

log_line_prefix

type: string default: %m [%p] context: sighup
<p>This is a printf-style string that is output at the beginning of each log line. % characters begin escape sequences that are replaced with status information as outlined below. Unrecognized escapes are ignored. Other characters are copied straight to the log line. Some escapes are only recognized by session processes, and will be treated as empty by background processes such as the main server process. Status information may be aligned either left or right by specifying a numeric literal after the % and before the option. A negative value will cause the status information to be padded on the right with spaces to give it a minimum width, whereas a positive value will pad on the left. Padding can be useful to aid human readability in log files.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line. The default is '%m [%p] ' which logs a time stamp and the process ID.</p>EscapeEffectSession only%aApplication nameyes%uUser nameyes%dDatabase nameyes%rRemote host name or IP address, and remote portyes%hRemote host name or IP addressyes%bBackend typeno%pProcess IDno%tTime stamp without millisecondsno%mTime stamp with millisecondsno%nTime stamp with milliseconds (as a Unix epoch)no%iCommand tag: type of session’s current commandyes%eSQLSTATE error codeno%cSession ID: see belowno%lNumber of the log line for each session or process, starting at 1no%sProcess start time stampno%vVirtual transaction ID (backendID/localXID)no%xTransaction ID (0 if none is assigned)no%qProduces no output, but tells non-session processes to stop at this point in the string; ignored by session processesno%%Literal %no<p>The backend type corresponds to the column backend_type in the view pg_stat_activity, but additional types can appear in the log that don’t show in that view.</p><p>The %c escape prints a quasi-unique session identifier, consisting of two 4-byte hexadecimal numbers (without leading zeros) separated by a dot. The numbers are the process start time and the process ID, so %c can also be used as a space saving way of printing those items. For example, to generate the session identifier from pg_stat_activity, use this query:SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || ‘.’ || to_hex(pid)FROM pg_stat_activity;</p><p>If you set a nonempty value for log_line_prefix, you should usually make its last character be a space, to provide visual separation from the rest of the log line. A punctuation character can be used too.</p><p>Syslog produces its own time stamp and process ID information, so you probably do not want to include those escapes if you are logging to syslog.</p><p>The %q escape is useful when including information that is only available in session (backend) context like user or database name. For example:log_line_prefix = ‘%m [%p] %q%u@%d/%a ‘</p>
Her günlük satırı çıktısının başında olan printf-style dizesidir. % karakterleri, aşağıda verilen durum bilgisiyle değiştirilen ‘kaçış dizileri’ (escape sequences) başlar. Tanınmayan kaçışlar yok sayılır. Diğer karakterler doğrudan günlük satırına kopyalanır. Bazı kaçışlar yalnızca oturum süreçleri tarafından tanınır ve ana sunucu süreci gibi background süreçler tarafından boş olarak değerlendirilir. Durum bilgileri, % ve opsiyondan arasında sayısal değişmez bir değer verilerek sola ve sağa hizalanabilir. Negatif bir değer, durum bilgisinin sağını boşlukla doldurarak minimum uzunluk sağlarken, pozitif değer solu boşluklarla doldurur. Doldurma, günlük dosyalarının okunabilirliği için kullanılabilir.

Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. Varsayılan değer, bir zaman damgası ve süreç ID kaydeden %m [%p]‘dir.
Kaçış Etki Session only
%a Uygulama adı yes
%u Kullanıcı adı yes
%d Veri tabanı adı yes
%r Uzak host adı veya IP adresi ve uzak port yes
%h Uzak host adı veya IP adresi yes
%b Backend tipi no
%p Süreç ID no
%t Milisaniyesiz zaman damgası no
%m Milisaniyeli zaman damgası no
%n Milisaniyeli zaman damgası ( Unix epoch olarak) no
%i Komut etiketi: oturumun mevcut komut türü yes
%e SQLSTATE hata kodu no
%c Oturum ID: aşağıdaki açıklamaya bakın no
%l Her oturum ve süreç için günlük satırının numarası, 1’den başlar. no
%s Süreç başlangıç ​​zaman damgası no
%v Sanal işlem kimliği (backendID/localXID) no
%x Transaction ID (atanmamışsa 0) no
%q Çıktı üretmez, oturum dışı süreçlere dizenin bu noktasında durmasını söyler, oturum süreçleri tarafından yok sayılır. no
%% Gerçek % no
Backend türü, pg_stat_activity view’ındaki ‘backend_type’ sütununa karşılık gelir. Günlükte, bu view’da gösterilmeyen ek türler görünebilir.

%c kaçışı, noktayla ayrılmış iki 4 baytlık hexadecimal sayıdan oluşan, neredeyse benzersiz bir oturum tanımlayıcısı yazdırır. Sayılar süreç başlama zamanı ve süreç ID’dir, bu nedenle %c bu öğeleri yazdırmanın alan tasarrufu sağlayan bir yoludur. Örneğin, pg_stat_activity’den oturum tanımlayıcısını oluşturmak için şu sorguyu kullanın:
SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' || to_hex(pid)
FROM pg_stat_activity;

log_lock_waits

type: bool default: off context: superuser
<p>Controls whether a log message is produced when a session waits longer than deadlock_timeout to acquire a lock. This is useful in determining if lock waits are causing poor performance. The default is off. Only superusers can change this setting.</p>
Bir oturum, kilit almak için deadlock_timeout süresinden daha uzun süre beklediğinde bir günlük mesajı üretilip üretilmeyeceğini kontrol eder. Bu parametre, kilit beklemelerinin düşük performansa neden olup olmadığını belirlenirken kullanışlıdır. Varsayılan olarak kapalıdır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_parameter_max_length

type: integer default: -1 min: -1 max: 1073741823 unit: B context: superuser
<p>If greater than zero, each bind parameter value logged with a non-error statement-logging message is trimmed to this many bytes. Zero disables logging of bind parameters for non-error statement logs. -1 (the default) allows bind parameters to be logged in full. If this value is specified without units, it is taken as bytes. Only superusers can change this setting.</p><p>This setting only affects log messages printed as a result of log_statement, log_duration, and related settings. Non-zero values of this setting add some overhead, particularly if parameters are sent in binary form, since then conversion to text is required.</p>
Sıfırdan büyükse, hatasız ifade loglama mesajıyla kaydedilen her bir bağlama parametresi (bind parameter) değeri bu kadar bayt’a kırpılır. 0, bağlama parametrelerinin günlüğe kaydedilmesini devre dışı bırakır. -1 (varsayılan), bağlama parametrelerinin olduğu gibi kaydedilmesine izin verir. Bu değer birimsiz belirtilirse bayt olarak alınır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Bu ayar yalnızca log_statement, log_duration ve ilgili ayarların bir sonucu olarak yazdırılan günlük mesajlarını etkiler. Bu ayarın 0 olmayan değerleri, özellikle parametreler binary formda gönderildiyse, metne dönüştürme gerekli olduğundan bazı ek yükler getirir.

log_parameter_max_length_on_error

type: integer default: 0 B min: -1 max: 1073741823 unit: B context: user
<p>If greater than zero, each bind parameter value reported in error messages is trimmed to this many bytes. Zero (the default) disables including bind parameters in error messages. -1 allows bind parameters to be printed in full. If this value is specified without units, it is taken as bytes.</p><p>Non-zero values of this setting add overhead, as PostgreSQL will need to store textual representations of parameter values in memory at the start of each statement, whether or not an error eventually occurs. The overhead is greater when bind parameters are sent in binary form than when they are sent as text, since the former case requires data conversion while the latter only requires copying the string.</p>
Sıfırdan büyükse, hata mesajlarında raporlanan her bağlama parametresi (bind parameter) değeri bu kadar bayt’a kırpılır. 0 (varsayılan), hata mesajlarına bağlama parametrelerinin dahil edilmesini devre dışı bırakır. -1, bağlama parametrelerinin tam olarak yazdırılmasına izin verir. Bu değer birimsiz belirtilirse bayt olarak alınır. Bu ayarın sıfır olmayan değerleri ek yük getirir. Çünkü PostgreSQL, sonuçta bir hata olsun ya da olmasın parametre değerlerinin metinsel temsillerini her bir ifadenin başlangıcında bellekte saklama ihtiyacı duyar. Bağlama parametreleri binary formda gönderildiğinde, metin olarak gönderildiklerine göre ek yük daha fazladır, çünkü ilk durum veri dönüştürme gerektirirken ikincisi yalnızca dizenin kopyalanmasını gerektirir.

log_statement

type: enum default: none context: superuser values: [none, ddl, mod, all]
<p>Controls which SQL statements are logged. Valid values are none (off), ddl, mod, and all (all statements). ddl logs all data definition statements, such as CREATE, ALTER, and DROP statements. mod logs all ddl statements, plus data-modifying statements such as INSERT, UPDATE, DELETE, TRUNCATE, and COPY FROM. PREPARE, EXECUTE, and EXPLAIN ANALYZE statements are also logged if their contained command is of an appropriate type. For clients using extended query protocol, logging occurs when an Execute message is received, and values of the Bind parameters are included (with any embedded single-quote marks doubled).</p><p>The default is none. Only superusers can change this setting.</p><p>Statements that contain simple syntax errors are not logged even by the log_statement = all setting, because the log message is emitted only after basic parsing has been done to determine the statement type. In the case of extended query protocol, this setting likewise does not log statements that fail before the Execute phase (i.e., during parse analysis or planning). Set log_min_error_statement to ERROR (or lower) to log such statements.</p>
Hangi SQL ifadelerinin günlüğe kaydedileceğini kontrol eder. Alabileceği değerler; none (kapalı), ddl, mod ve all (tüm ifadeler) ‘dir. ddl; CREATE, ALTER ve DROP ifadeleri gibi tüm veri tanımlama ifadelerini günlüğe kaydeder. mod, tüm ddl ifadelerinin yanı da INSERT, UPDATE, DELETE, TRUNCATE ve COPY FROM gibi veri değiştirme ifadelerini günlüğe kaydeder. PREPARE, EXECUTE ve EXPLAIN ANALYZE deyimleri de, içerdikleri komutlar uygun türde ise günlüğe kaydedilir. Genişletilmiş sorgu (extended query) protokolü kullanan istemciler için günlüğe kaydetme, bir Execute mesajı alındığında gerçekleşir ve Bağlama (Bind) parametrelerinin değerleri dahil edilir. Öntanımlı ayar none‘dir. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_replication_commands

type: bool default: off context: superuser
<p>Causes each replication command to be logged in the server log. See protocol-replication for more information about replication command. The default value is off. Only superusers can change this setting.</p>
Her replikasyon komutunun sunucu günlüğüne kaydedilmesini sağlar. Replikasyon komutu hakkında daha fazla bilgi için bkz. . Öntanımlı değeri off. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_temp_files

type: integer default: -1 min: -1 max: 2147483647 unit: kB context: superuser
<p>Controls logging of temporary file names and sizes. Temporary files can be created for sorts, hashes, and temporary query results. If enabled by this setting, a log entry is emitted for each temporary file when it is deleted. A value of zero logs all temporary file information, while positive values log only files whose size is greater than or equal to the specified amount of data. If this value is specified without units, it is taken as kilobytes. The default setting is -1, which disables such logging. Only superusers can change this setting.</p>
Geçici dosya adlarının ve boyutlarının günlüğe kaydedilmesini kontrol eder. Sıralamalar, hash’ler ve geçici sorgu sonuçları için geçici dosyalar oluşturulabilir. Bu ayarla etkinleştirilirse, silinen her geçici dosya için bir günlük girişi yayınlanır. Sıfır değeri tüm geçici dosya bilgilerini günlüğe kaydederken, pozitif değerler yalnızca boyutu belirtilen veri miktarından büyük veya bu miktara eşit olan dosyaları günlüğe kaydeder. Bu değer birimsiz belirtilirse kilobayt olarak alınır. Öntanımlı -1 ayarı, böyle bir günlük kaydını devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

log_timezone

type: string default: GMT context: sighup
<p>Sets the time zone used for timestamps written in the server log. Unlike TimeZone, this value is cluster-wide, so that all sessions will report timestamps consistently. The built-in default is GMT, but that is typically overridden in postgresql.conf; initdb will install a setting there corresponding to its system environment. See datatype-timezones for more information. This parameter can only be set in the postgresql.conf file or on the server command line.</p>
Sunucu günlüğüne yazılan zaman damgaları için kullanılan saat dilimini ayarlar. Parametre değeri TimeZone‘dan farklı olarak küme çapındadır. Böylece tüm oturumlar zaman damgalarını tutarlı bir şekilde rapor eder. Yerleşik varsayılan GMT‘dir, ancak bu genellikle postgresql.conf‘ta geçersiz kılınır; initdb, sistem ortamına karşılık gelen bir ayar kuracaktır. Daha fazla bilgi için bkz. . Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.

CSV Formatında Log Çıktısı Kullanma

log_destination listesine csvlog‘un dahil edilmesi, günlük dosyalarını bir veritabanı tablosuna aktarmak için kullanışlı bir yol sağlar. Bu parametre şu sütunlarla virgülle ayrılmış değerler (CSV) biçiminde günlük satırları yayınlar: milisaniyeli zaman damgası, kullanıcı adı, veritabanı adı, süreç ID; istemci host: bağlantı noktası numarası (port), oturum ID, herbir oturum için satır numarası, komut etiketi, oturum başlangıç ​​zamanı, sanal transaction ID, normal transaction ID, hata düzeyi, SQLSTATE kodu, hata mesajı, hata mesajı ayrıntısı, ipucu, hataya neden olan dahili sorgu (varsa), oradaki hata pozisyonunun karakter sayısı, hata bağlamı, hataya yol açan kullanıcı sorgusu (varsa ve log_min_error_statement tarafından etkinleştirilmişse), oradaki hata konumunun karakter sayısı, PostgreSQL kaynak kodundaki hatanın konumu (log_error_verbosity ayrıntılı olarak ayarlanmışsa), uygulama adı ve backend türü. CSV biçimli günlük çıktısını depolamak için örnek bir tablo tanımı:

CREATE TABLE postgres_log
(
  log_time timestamp(3) with time zone,
  user_name text,
  database_name text,
  process_id integer,
  connection_from text,
  session_id text,
  session_line_num bigint,
  command_tag text,
  session_start_time timestamp with time zone,
  virtual_transaction_id text,
  transaction_id bigint,
  error_severity text,
  sql_state_code text,
  message text,
  detail text,
  hint text,
  internal_query text,
  internal_query_pos integer,
  context text,
  query text,
  query_pos integer,
  location text,
  application_name text,
  backend_type text,
  PRIMARY KEY (session_id, session_line_num)
);
Bu tabloya bir günlük dosyası aktarmak için, COPY komutunu kullanın:
COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
file_fdw modülünü kullanarak dosyaya yabancı bir tablo olarak erişmek de mümkündür.

CSV günlük dosyalarını içe aktarmayı basitleştirmek için yapmanız gereken birkaç şey vardır:
  1. Günlük dosyalarınız için tutarlı, öngörülebilir bir adlandırma düzeni sağlamak için log_filename ve log_rotation_age parametrelerini ayarlayın. Bu, dosya adını öngörmenizi ve bir günlük dosyasının ne zaman tamamlandığını ve dolayısıyla içe aktarılmaya hazır olduğunu bilmenizi sağlar.
  2. Günlük dosyası adının tahmin edilmesini zorlaştıracağından boyut tabanlı günlük rotasyonunu devre dışı bırakmak için log_rotation_size değerini 0 olarak ayarlayın.
  3. log_truncate_on_rotation öğesini açık olarak ayarlayın, böylece eski günlük verileri aynı dosyadaki yenileriyle karıştırılmaz.
  4. Yukarıda verilen tablo tanımı, bir birincil anahtar spesifikasyonu içerir. Bu, aynı bilgilerin yanlışlıkla iki kez içe aktarılmasına karşı koruma sağlamak için yararlıdır. COPY komutu, içe aktardığı tüm verileri tek seferde işler, bu nedenle herhangi bir hata içe aktarmanın tamamının başarısız olmasına neden olur. Tam olmayan bir günlük dosyasını içe aktarırsanız daha sonra tamamlandığında dosyayı tekrar içe aktardığınızda birincil anahtar ihlali içe aktarmanın başarısız olmasına neden olur. İçe aktarmadan önce, günlük tamamlanana ve kapanana kadar bekleyin. Ayrıca bu prosedür tamamen yazılmamış bir parçalı satırın yanlışlıkla içe aktarılmasına karşı koruma sağlayarak COPY‘nın başarısız olmasına neden olur.

Süreç Başlığı

Bu başlık altında verilen ayarlar, sunucu süreçlerinin süreç başlıklarının değiştirilmesini kontrol eder. Süreç başlıkları ps ve Windows Process Explorer gibi programlar kullanılarak görüntülenir. Ayrıntılar için bkz .

cluster_name

type: string context: postmaster restart: Gerektirir
<p>Sets a name that identifies this database cluster (instance) for various purposes. The cluster name appears in the process title for all server processes in this cluster. Moreover, it is the default application name for a standby connection (see synchronous_standby_names.)</p><p>The name can be any string of less than NAMEDATALEN characters (64 characters in a standard build). Only printable ASCII characters may be used in the cluster_name value. Other characters will be replaced with question marks (?). No name is shown if this parameter is set to the empty string '' (which is the default). This parameter can only be set at server start.</p>
Bu parametre, veritabanı kümesini tanımlayan bir ad belirtir. Küme adı, bu kümedeki sunucu süreçlerinin süreç başlığında görünür. Ayrıca, bir standby bağlantısı için varsayılan uygulama adıdır. bkz. synchronous_standby_names

Ad, NAMEDATALEN‘den daha az karakterde herhangi bir dize olabilir (standart build’de 64 karakter). cluster_name parametre değerinde yalnızca yazdırılabilir ASCII karakterler kullanılabilir. Diğer karakterler soru işareti (?) ile değiştirilecektir. Bu parametre boş dizeye ‘ ‘ (varsayılan böyle) ayarlanırsa ad gösterilmez. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir.

update_process_title

type: bool default: on context: superuser
<p>Enables updating of the process title every time a new SQL command is received by the server. This setting defaults to on on most platforms, but it defaults to off on Windows due to that platform’s larger overhead for updating the process title. Only superusers can change this setting.</p>
Sunucu tarafından her yeni SQL komutu alındığında süreç başlığının güncellenmesini sağlar. Bu ayar, çoğu platformda varsayılan olarak açıktır. Windows’ta süreç başlığının büyük güncellenme ek yükü nedeniyle varsayılan olarak kapalıdır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.

Kaynak:

[1]. PostgreSQL Documentation

[2]. postgresqlco.nf