Jak wszyscy wiemy, „unix” może zawierać w pliku wszystko oprócz „/” i „\ 0”, sysadmini mają jednak znacznie mniejsze preferencje, głównie z powodu braku lubienia spacji jako danych wejściowych ... i wielu rzeczy mających specjalne znaczenie między innymi „:” i „@”.
Ostatnio widziałem inny przypadek, w którym w nazwie pliku użyto znacznika czasu, a po graniu w różnych formatach, aby było „lepiej”, pomyślałem, że spróbuję znaleźć „najlepszą praktykę”, a nie taką, którą wymyśliłem Chciałbym tylko zapytać tutaj i zobaczyć, co ludzie myślą.
Możliwe „wspólne” rozwiązania (p = przedrostek is = przyrostek):
Format syslog / logrotate / DNS:
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
plusy:
- Jest „powszechny”, więc „wystarczająco dobry” może być lepszy niż „najlepszy”.
- Żadnych dziwnych postaci.
- Łatwo odróżnić „obiekt blob daty / godziny” od wszystkiego innego.
Cons:
- Wersja tylko z datą nie jest łatwa do odczytania, a uwzględnienie czasu powoduje, że moje oczy krwawią, a sekundy to po prostu „lol”.
- Zakłada 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
plusy:
- Bez odstępów.
- Uwzględnia TZ.
- Jest „niezły” do odczytania przez ludzi (tylko data jest w. Dobra).
- Może być wygenerowany przez $ (data --iso = {godziny, minuty, sekundy})
Cons:
- scp / tar / etc. nie polubią tych znaków „:”.
- Trochę czasu zajmuje „normalnym” ludziom zobaczenie WTF, do czego służy „T”, i na czym to polega na końcu :).
- Wiele znaków „-”.
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
plusy:
- Uwzględnia TZ.
- Może być łatwo odczytany przez „wszystkich ludzi”.
- Potrafi odróżnić datę / godzinę od prefiksu / sufiksu.
- Niektóre z powyższych można wygenerować za pomocą $ (data --iso = {godziny, sekundy})
Cons:
- Ma spacje w wersjach czasowych (co oznacza, że cały kod go nienawidzi).
- scp / tar / etc. nie polubią tych znaków „:”.
Uwielbiam łączniki:
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
plusy:
- w zasadzie nieco ładniejszy syslog / etc. wariant.
Cons:
- Wiele znaków „-”.
- Zakłada TZ.
Uwielbiam łączniki z rozszerzeniami:
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
plusy:
- w zasadzie nieco ładniejszy wariant „Uwielbiam łączniki”.
- Żadnych dziwnych postaci.
- Potrafi odróżnić datę / godzinę od prefiksu / sufiksu.
Cons:
- Za pomocą '.' tutaj jest nieco nietradycyjny.
- Zakłada TZ.
... więc każdy chce podać preferencje i powód, lub więcej niż jeden (np. nie przejmuj się TZ, jeśli 95% pozostaje, aby pozostać maszyną lokalnie, ale dbaj bardzo, jeśli nie jest).
Lub oczywiście coś, czego nie ma na powyższej liście.
Odpowiedzi:
Więc ... próbuj „najlepsze” formaty daty i godziny:
20120317T1748Z
2012-03-17T1748Z
17.03.2012 1748Z
Jestem częściowy do 1., ponieważ jest to w pełni standard IAW, ale pozostałe są bliskie.
Uwaga :: Oczywiście dodaj sekundy, jeśli to konieczne. ... i tak, z sekundami lub bez (lub nawet minutami) to wszystko IAW ISO 8601. :)
źródło
Nie zawarłbym strefy czasowej, używam tylko czasu uniwersalnego. W przypadku pomyłki możesz dodać sufiks -UTC. Jeśli określisz strefę czasową, ktoś może na niej polegać. I byłyby dziwne przypadki, w których zmiany DST lub przesunięcia DST sieją spustoszenie w niektórych procesach lub przetwarzanie jest inne w niektórych systemach, ponieważ ich konfiguracja DST jest nieaktualna. UTC jest zawsze takie samo wszędzie.
Myślę, że łączniki sprawiają, że nazwa pliku jest bardziej czytelna w tym sensie, że ułatwia rozpoznanie czasu danych pliku. Jeśli chcesz uwzględnić dokładność poniżej sekundy, zwykle jest to .nnnnn.
Osobiście nie lubię T. Używanie dwukropka w nazwie pliku może wpływać na interoperacyjność z innymi systemami plików.
źródło
Ja także nie uwzględniałbym stref czasowych. Twoje skrypty / narzędzia przetwarzające dzienniki powinny o tym wiedzieć. Również w odniesieniu do zmian czasu letniego / zimowego - zalecam, aby twój serwer był zawsze ustawiony na UTC przez cały czas. Nagła różnica między strefą czasową serwera podstawowego a (niezmienioną) strefą czasową działającej na niej bazy danych może powodować bóle głowy ;-).
Jeśli chodzi o nazewnictwo plików dziennika - wiem, wielu nie lubi tego, ale lubię to upraszczać:
p-%s-type.log = p-1311116459-type.log
plusy:
Cons:
Na komputerach, na których koledzy (z jakiegokolwiek powodu) muszą ręcznie sprawdzać dzienniki, wybrałem ten wariant, obracając codziennie:
p-%Y-%m-%d-type.log = p-2011-07-20-type.log
Z poważaniem
źródło