Hata Raporlama ve Logging
Where to Log
log_destination
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>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
log_destination = ‘stderr,syslog’
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.LOCAL0
‘dan LOCAL7
‘ye kadar syslog facility kullanabilir, ancak çoğu platform bu gibi mesajları yok sayar. Çalışmasını sağlamak için syslog daemon yapılandırma dosyasına şu şekilde ekleme yapmanız gerekir:local0. */var/log/postgresql
logging_collector
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>archive_command
gibi komut dosyaları tarafından üretilen hata mesajları genel örneklerdir. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir.log_directory
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>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
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>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
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>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
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>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
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>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
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>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
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>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
postgres
. This parameter can only be set in the postgresql.conf file or on the server command line.</p>postgres
‘tir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.syslog_sequence_numbers
[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>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
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
PostgreSQL
. This parameter can only be set in the postgresql.conf file or on the server command line.</p>PostgreSQL
‘dir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.When to Log
log_min_messages
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>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
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>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
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>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_statement
ile birlikte kullanırken, log_statement
nedeniyle günlüğe kaydedilen ifadeler süre günlüğü mesajında tekrarlanmayacaktır.log_min_duration_sample
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>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
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>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
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>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
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>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)
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>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>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>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
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>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
log_connections
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>log_disconnections
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>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
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>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
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>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
log_line_prefix
%
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%a
Application nameyes%u
User nameyes%d
Database nameyes%r
Remote host name or IP address, and remote portyes%h
Remote host name or IP addressyes%b
Backend typeno%p
Process IDno%t
Time stamp without millisecondsno%m
Time stamp with millisecondsno%n
Time stamp with milliseconds (as a Unix epoch)no%i
Command tag: type of session’s current commandyes%e
SQLSTATE error codeno%c
Session ID: see belowno%l
Number of the log line for each session or process, starting at 1no%s
Process start time stampno%v
Virtual transaction ID (backendID/localXID)no%x
Transaction ID (0 if none is assigned)no%q
Produces 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>%
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 |
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_line_prefix = ‘%m [%p] %q%u@%d/%a ‘
log_lock_waits
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>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
-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>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
-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>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
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>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_statement = all
ayarıyla bile günlüğe kaydedilmez. Çünkü günlük mesajı, yalnızca ifade türünü belirlemek için temel parsing yapıldıktan sonra yayınlanır. Genişletilmiş sorgu (extended query) protokolü durumunda, bu ayar aynı şekilde Execute aşamasından önce (yani parse analizi veya planlama sırasında) başarısız olan ifadeleri günlüğe kaydetmez. Bu tür ifadeleri günlüğe kaydetmek için log_min_error_statement
parametresini ERROR
veya daha düşük olarak ayarlayın.log_replication_commands
off
. Only superusers can change this setting.</p>off
. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.log_temp_files
-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
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>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)
);
COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
CSV günlük dosyalarını içe aktarmayı basitleştirmek için yapmanız gereken birkaç şey vardır:
- Günlük dosyalarınız için tutarlı, öngörülebilir bir adlandırma düzeni sağlamak için
log_filename
velog_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. - 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. log_truncate_on_rotation
öğesini açık olarak ayarlayın, böylece eski günlük verileri aynı dosyadaki yenileriyle karıştırılmaz.- 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ğlayarakCOPY
‘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
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>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
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>Kaynak:
[2]. postgresqlco.nf