Seperti yang kita semua tahu "unix" dapat memiliki apa pun dalam file kecuali '/' dan '\ 0', namun sysadmin cenderung memiliki preferensi yang jauh lebih kecil, terutama karena tidak ada yang menyukai spasi sebagai input ... dan banyak hal yang memiliki arti khusus untuk ':' dan '@' antara lain.
Baru-baru ini saya telah melihat kasus lain di mana cap waktu digunakan dalam nama file, dan setelah bermain dengan format yang berbeda sedikit untuk membuatnya "lebih baik" Saya pikir saya akan mencoba untuk menemukan "praktik terbaik", tidak melihat yang saya pikir Saya hanya bertanya di sini dan melihat apa yang dipikirkan orang.
Kemungkinan solusi "umum" (p = awalan dan s = akhiran):
syslog / logrotate / DNS like format:
p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
pro:
- Ini "biasa", jadi "cukup baik" mungkin lebih baik daripada "terbaik".
- Tidak ada karakter aneh.
- Mudah untuk membedakan "gumpalan tanggal / waktu" dari yang lainnya.
kontra:
- Versi hanya tanggal tidak mudah dibaca, dan termasuk waktu membuat mata saya berdarah dan detik juga hanya "lol".
- Asumsikan TZ.
Format ISO-8601-
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%dT%H:%M%z-s = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T23:32:16+0200-s
pro:
- Tidak ada ruang.
- Mempertimbangkan TZ.
- Apakah "tidak buruk" untuk dibaca oleh manusia (hanya tanggal v. Baik).
- Dapat dihasilkan oleh $ (tanggal --iso = {jam, menit, detik})
kontra:
- scp / tar / dll. tidak akan menyukai karakter ':' itu.
- Butuh sedikit waktu untuk orang "normal" untuk melihat WTF untuk 'T', dan untuk apa akhirnya :).
- Banyak karakter '-'.
format rfc-3339
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d %H:%M%:z-s = p-2011-07-19 17:32-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 17:32:16-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 23:32:16+02:00-s
pro:
- Mempertimbangkan TZ.
- Dapat dengan mudah dibaca oleh "semua manusia".
- Dapat membedakan tanggal / waktu dari awalan / akhiran.
- Beberapa hal di atas dapat dihasilkan dengan $ (tanggal --iso = {jam, detik})
kontra:
- Memiliki spasi di versi waktu (yang berarti semua kode akan membencinya).
- scp / tar / dll. tidak akan menyukai karakter ':' itu.
Saya suka tanda hubung:
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d-%H-%M-s = p-2011-07-19-17-32-s p-%Y-%m-%d-%H-%M-%S-s = p-2011-07-19-23-32-16-s
pro:
- pada dasarnya syslog sedikit lebih bagus / etc. varian.
kontra:
- Banyak karakter '-'.
- Asumsikan TZ.
Saya suka tanda hubung, dengan ekstensi:
p.%Y-%m-%d.s = p.2011-07-19.s p.%Y-%m-%d.%H-%M.s = p.2011-07-19.17-32.s p.%Y-%m-%d.%H-%M-%S.s = p.2011-07-19.23-32-16.s
pro:
- pada dasarnya varian "I love hyphens" yang sedikit lebih bagus.
- Tidak ada karakter aneh.
- Dapat membedakan tanggal / waktu dari awalan / akhiran.
kontra:
- Menggunakan '.' di sini agak non-tradisional.
- Asumsikan TZ.
... jadi siapa pun yang ingin memberikan preferensi dan alasan, atau lebih dari satu (Misalnya. tidak peduli tentang TZ jika 95% adalah tetap mesin lokal, tetapi sangat peduli jika tidak).
Atau, jelas, sesuatu yang tidak ada dalam daftar di atas.
Jawaban:
Jadi ... contoh format waktu tanggal 'terbaik':
20120317T1748Z
2012-03-17T1748Z
2012-03-17--1748Z
Saya sebagian ke 1. karena sepenuhnya IAW standar, tetapi yang lain dekat.
Catatan :: Tambahkan detik seperlunya, tentu saja. ... dan ya, dengan atau tanpa detik (atau bahkan beberapa menit) adalah semua IAW ISO 8601. :)
sumber
Saya tidak akan memasukkan zona waktu, hanya menggunakan waktu universal. Jika mungkin ada kebingungan, Anda bisa menambahkan akhiran -UTC. Jika Anda menentukan zona waktu, seseorang mungkin bergantung padanya. Dan akan ada kasus tepi aneh di mana perubahan DST atau pergeseran DST mendatangkan malapetaka pada beberapa pemrosesan, atau pemrosesan berbeda pada beberapa sistem karena konfigurasi DST mereka tidak up to date. UTC selalu sama di mana-mana.
Saya pikir tanda hubung membuat nama file lebih mudah dibaca, dalam arti bahwa membuatnya lebih mudah untuk membedakan datetime dari data file. Jika Anda ingin memasukkan ketepatan sub-detik, biasanya itu adalah .nnnnn.
Saya pribadi tidak suka T. Menggunakan titik dua dalam nama file dapat memengaruhi interoperabilitas dengan sistem file lainnya.
sumber
Saya juga tidak akan memasukkan zona waktu. Script / alat Anda yang memproses log harus tahu tentang itu. Juga mengenai perubahan waktu musim panas / musim dingin - Saya sarankan untuk menjaga server Anda selalu diperbaiki di UTC sepanjang waktu. Perbedaan mendadak antara zona waktu server dasar dan zona waktu (tidak berubah) dari database yang berjalan di atasnya dapat menyebabkan sakit kepala ;-).
Mengenai penamaan file log - Saya tahu, banyak yang tidak menyukainya, tapi saya ingin membuatnya tetap sederhana:
p-%s-type.log = p-1311116459-type.log
pro:
kontra:
Pada mesin di mana kolega (untuk alasan apa pun) perlu memeriksa log secara manual saya pergi untuk varian ini, berputar setiap hari:
p-%Y-%m-%d-type.log = p-2011-07-20-type.log
salam Hormat
sumber