Sözdizimi
rotatelogs [ -l ] [ -L linkname ] [ -p program ] [ -f ] [ -D ] [ -t ] [ -v ] [ -e ] [ -c ] [
-n number-of-files ] logfile rotationtime|filesize(B|K|M|G) [ offset ]
Özet
rotatelogs, Apache'nin borulanmış (piped) günlük dosyası özelliğiyle birlikte kullanılmak üzere tasarlanmış basit bir programdır. Günlüğün zaman aralığına veya maksimum boyutuna göre döndürülmesini (rotation) destekler.
Seçenekler
-l: Aralık veya boyut tabanlı döndürmede strftime(3) biçimlendirmesi için temel olarak GMT yerine yerel saatin kullanılmasını sağlar.
-L linkname
Geçerli günlük dosyasından belirtilen bağlantı adına bir sabit bağlantı (hard link) oluşturulmasını sağlar. Bu, tail -F bağlantı_adı gibi bir komut kullanarak günlüklerin döndürme işlemleri boyunca kesintisiz olarak izlenmesi için kullanılabilir.
Eğer bağlantı_adı mutlak bir yol değilse, rotatelogs'un çalışma dizinine göredir; rotatelogs sunucu tarafından çalıştırıldığında bu dizin ServerRoot olur.
-p program Eğer belirtilirse, rotatelogs yeni bir günlük dosyası her açıldığında belirtilen programı yürütür. Yeni açılan dosyanın adı, programa ilk argüman olarak aktarılır. Eğer bir döndürmeden sonra yürütülüyorsa, eski günlük dosyası ikinci argüman olarak aktarılır. rotatelogs çalışmaya devam etmek için belirtilen programın sonlanmasını beklemez ve sonlanma durumunda döndürülen hiçbir hata kodunu günlüğe kaydetmez. Başlatılan (spawned) program, rotatelogs ile aynı stdin, stdout ve stderr kanallarını kullanır ve ayrıca çevre değişkenlerini miras alır.
-f: rotatelogs başlar başlamaz, ilk günlük girdisinin okunmasını beklemeden günlük dosyasının hemen açılmasını sağlar (yoğun olmayan siteler için, sunucunun başlatılması ile ilk isteğin işlenmesi arasında önemli bir gecikme olabilir, bu da ilgili günlük dosyasının o zamana kadar "mevcut olmadığı" anlamına gelir ve bu durum bazı otomatik günlük kaydetme araçlarında sorunlara yol açar).-D: Henüz mevcut değillerse, günlük dosyasının yerleştirileceği yolun üst dizinlerini oluşturur. Bu, strftime(3) biçimlendirmesinin yalnızca dosya adında değil, yolda da kullanılabilmesini sağlar.-t: Günlük dosyasının döndürülmek yerine kırpılmasını (truncation) sağlar. Bu, bir günlüğün tail gibi bir komutla gerçek zamanlı olarak işlendiği ve arşivlenmiş verilere ihtiyaç duyulmadığı durumlarda kullanışlıdır. Dosya adına herhangi bir uzantı eklenmez, ancak '%' karakterleri içeren biçim dizeleri dikkate alınır.-T: Açıldığında ilk günlük dosyası dışındaki tüm günlük dosyalarının kırpılmasını sağlar. Bu, biçim dizesinin ayın günü gibi döngüsel bir şey içerdiği durumlarda kullanışlıdır. 2.4.56 ve sonraki sürümlerde mevcuttur.-v: STDERR üzerinde ayrıntılı çıktı üretir. Çıktı, yapılandırma çözümlemesinin sonucunu ve tüm dosya açma ve kapatma eylemlerini içerir.-e: Günlükleri doğrudan stdout'a yansıtır. Günlüklerin zincirdeki başka bir araç tarafından gerçek zamanlı olarak daha ileri düzeyde işlenmesi gerektiğinde kullanışlıdır.-c: Boş olsa bile her aralık için günlük dosyası oluşturur.
-n number-of-files Zaman damgası içermeyen döngüsel bir dosya adları listesi kullanır. Bu seçenek, başlangıçta ve döndürme sırasında günlük dosyalarının üzerine yazar. -n 3 ile açılan günlük dosyası serisi sırasıyla "logfile", "logfile.1", "logfile.2" olur ve ardından tekrar "logfile" üzerine yazılır. Bu program "logfile"ı ilk açtığında, dosya yalnızca -t seçeneği de sağlanmışsa kırpılacaktır. Sonraki her döndürme işlemi her zaman hedef dosyanın kırpılmasıyla başlayacaktır. -t seçeneği olmadan boyut tabanlı döndürme ve mevcut günlük dosyalarının bulunması durumunda, bu seçenek, ilk günlük girdilerinin "logfile.1"e gönderilmesi ve daha sonraki "logfile.n" henüz kullanılmamış olsa bile "logfile.1"deki girdilerin korunmaması gibi sezgisel olmayan davranışlara yol açabilir. 2.4.5 ve sonraki sürümlerde mevcuttur.
logfile Günlük dosyasının yolu ve temel adı (basename). Eğer günlük dosyası adı herhangi bir '%' karakteri içeriyorsa, strftime(3) için bir biçim dizesi olarak kabul edilir. Aksi takdirde, otomatik olarak .nnnnnnnnnn uzantısı eklenir ve bu değer saniye cinsinden zamandır (cümlede -t seçeneği kullanılmadığı sürece). Her iki biçim de başlangıç zamanını geçerli dönemin başlangıcından itibaren hesaplar. Örneğin, 86400 saniyelik bir döndürme süresi belirtilmişse, strftime(3) biçiminden oluşturulan saat, dakika ve saniye alanlarının tümü sıfır olacak ve geçerli 24 saatlik dönemin başlangıcını (gece yarısını) ifade edecektir.
strftime(3) dosya adı biçimlendirmesini kullanırken, günlük dosyası biçiminin, günlükler her döndürüldüğünde farklı bir dosya adı üretecek kadar yeterli ayrıntıya (granularity) sahip olduğundan emin olun. Aksi takdirde döndürme işlemi, yeni bir dosya başlatmak yerine aynı dosyanın üzerine yazacaktır. Örneğin, günlük dosyası /var/log/errorlog.%Y-%m-%d ise ve günlük döndürme sınırı 5 megabayt olarak belirlenmişse, ancak aynı gün içinde iki kez 5 megabayta ulaşılırsa, aynı günlük dosya adı üretilecek ve günlük döndürme işlemi aynı dosyaya yazmaya devam edecektir.
Eğer günlük dosyası mutlak bir yol değilse, rotatelogs'un çalışma dizinine göredir; rotatelogs sunucu tarafından çalıştırıldığında bu dizin ServerRoot olur.
rotationtime Günlük dosyası döndürme işlemleri arasındaki saniye cinsinden süre. Döndürme, bu aralığın başlangıcında gerçekleşir. Örneğin, döndürme süresi 3600 ise günlük dosyası her saatin başlangıcında döndürülecektir; döndürme süresi 86400 ise günlük dosyası her gece gece yarısı döndürülecektir. (Bir aralık boyunca hiçbir veri kaydedilmezse hiçbir dosya oluşturulmayacaktır.)
filesize(B|K|M|G) Maksimum dosya boyutunun ardından tam olarak B (Bayt), K (Kilobayt), M (Megabayt) veya G (Gigabayt) harflerinden birinin getirilmesiyle belirtilen değer.
Hem süre hem de boyut belirtildiğinde, boyut süreden sonra verilmelidir. Süre veya boyut sınırlarından herhangi birine ulaşıldığında döndürme gerçekleşir.
offset UTC'den dakika cinsinden fark (offset). Belirtilmezse sıfır varsayılır ve UTC kullanılır. Örneğin, UTC -5 saat bölgesindeki yerel saati kullanmak için bu argüman için -300 değeri belirtilir. Çoğu durumda, bir zaman farkı belirtmek yerine -l seçeneği kullanılmalıdır.
Örnekler
CustomLog "|bin/rotatelogs /var/log/logfile 86400" common
Bu, nnnn değerinin günlüğün nominal olarak başladığı sistem zamanı olduğu /var/log/logfile.nnnn dosyalarını oluşturur (bu zaman her zaman döndürme süresinin bir katı olacaktır, böylece cron betiklerini bununla senkronize edebilirsiniz). Her döndürme süresinin sonunda (burada 24 saat sonra) yeni bir günlük başlatılır.
CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common
Bu, yyyy'nin yıl, mm'nin ay ve dd'nin ayın günü olduğu /var/log/logfile.yyyy.mm.dd dosyalarını oluşturur. Günlük kaydı, her gün yerel saatle gece yarısında yeni bir dosyaya geçecektir.
CustomLog "|bin/rotatelogs /var/log/logfile 5M" common
Bu yapılandırma, günlük dosyası 5 megabaytlık bir boyuta ulaştığında onu döndürecektir.
ErrorLog "|bin/rotatelogs /var/log/errorlog.%Y-%m-%d-%H_%M_%S 5M"
Bu yapılandırma, hata günlüğü dosyası 5 megabaytlık bir boyuta ulaştığında onu döndürecektir ve günlük dosyası adına eklenecek uzantı errorlog.YYYY-mm-dd-HH_MM_SS biçiminde oluşturulacaktır.
CustomLog "|bin/rotatelogs -t /var/log/logfile 86400" common
Bu, başlangıçta dosyayı kırparak ve ardından günde bir kez dosyayı kırparak /var/log/logfile dosyasını oluşturur. Bu senaryoda ayrı bir sürecin (tail gibi) dosyayı gerçek zamanlı olarak işlemesi beklenir.
CustomLog "|bin/rotatelogs -T /var/log/logfile.%d 86400" common
Eğer sunucu ayın birinci gününde başlatılırsa (veya yeniden başlatılırsa), bu işlem /var/log/logfile.01 dosyasına ekleme yapar. Ayın ikinci gününde bir günlük girdisi yazıldığında, /var/log/logfile.02 kırpılır ve yeni girdiler en üste eklenir. Bu örnek, harici bir bakım gerektirmeden yaklaşık 1 aylık günlük verisini tutar.
Taşınabilirlik
Aşağıdaki günlük dosyası biçim dizesi yer değiştirmeleri tüm strftime(3) gerçeklemeleri tarafından desteklenmelidir; kütüphaneye özgü uzantılar için strftime(3) kılavuz sayfasına bakın.
• %A - tam gün adı (yerelleştirilmiş)
• %a - 3 karakterli gün adı (yerelleştirilmiş)
• %B - tam ay adı (yerelleştirilmiş)
• %b - 3 karakterli ay adı (yerelleştirilmiş)
• %c - tarih ve saat (yerelleştirilmiş)
• %d - 2 haneli ayın günü
• %H - 2 haneli saat (24 saatlik saat sistemi)
• %I - 2 haneli saat (12 saatlik saat sistemi)
• %j - 3 haneli yılın günü
• %M - 2 haneli dakika
• %m - 2 haneli ay
• %p - 12 saatlik saat sisteminin öö/ös (am/pm) göstergesi (yerelleştirilmiş)
• %S - 2 haneli saniye
• %U - 2 haneli yılın haftası (Pazar haftanın ilk günü)
• %W - 2 haneli yılın haftası (Pazartesi haftanın ilk günü)
• %w - 1 haneli haftanın günü (Pazar haftanın ilk günü)
• %X - saat (yerelleştirilmiş)
• %x - tarih (yerelleştirilmiş)
• %Y - 4 haneli yıl
• %y - 2 haneli yıl
• %Z - saat dilimi adı
• %% - tam anlamıyla %
Apache HTTP Server 2023-03-05 ROTATELOGS(8)