Jaký je nejlepší formát souboru protokolu?

hlasů
15

Vyvíjíme nástroje databáze a my bychom chtěli psát log soubor ve formátu, který je rozšiřitelný a snadno být importována do databázové tabulky. Všichni cítíme, že filtrování tuto informaci pomocí SQL je to dobrý nápad, protože log bude dlouhý souboru a „hledání“, nemusí být dost dobrý. Mohl byste mi dát nějaké návrhy? Nějaké zkušenosti budou užitečné taky! Díky předem.

Položena 12/05/2011 v 10:02
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
8

První věc, kterou bych říci, že je formát souboru by měl být čitelný. Mé důvody jsou uvedeny zde: Proč bych měl používat lidský čitelný formát souboru.

Kromě toho, že je nemožné odpovědět na takovou vágní otázka. Nicméně, zde jsou některé z otázek, měli byste zvážit:

  1. Jak velký to soubor protokolu roste? Jak to v porovnání s prostoru, který máte? Je-li prostor bude problém, pak další parsimonious formát je lepší - například protokol Nárazníky .
  2. Jak je soubor protokolu bude se podíval na? Je-li použití specifických nástrojů, formát záleží méně, než když se bude pomocí textového editoru nebo Excel
  3. Jaký typ dat jste ukládání? Pokud je to jen textový ASCII pak CSV funguje dobře.
  4. Je typ informace důležité pro vaše data? Potřebujete porovnat čísla a data jako čísla a data, nikoli jen struny? Pokud ano, pak nějaký zadaný systém (například XML nebo JSON ), by mohla být lepší
  5. Jsou údaje bude převedena na jiné lidi? V takovém případě se něco s dobrými jazykovými prostředky pro čtení a psaní by mohlo být důležité,
  6. Jak rychle se data je třeba písemné? Pokud rychlost je problém (což by mohlo být pro soubory v reálném čase log) pak formát optimalizovaný pro toto by mohlo být důležité.
  7. Jak rychle se data je třeba číst?
  8. Budou všechny údaje musí být v paměti, nebo to může být skenován v serializovaném způsobem?

Když můžete odpovědět na všechny tyto otázky, budete pravděpodobně znát odpověď sami. Pokud tomu tak není, aby vaše otázka konkrétnější tyto otázky odpověděli a bude to jednodušší pro někoho, kdo by vám pomohl.

Osobně jsem vždycky rád, když údaje log bylo napsáno ve formátu CSV. Je dostatečně flexibilní, aby expandovat (přidat další sloupce, změnit délku pole), je rychlé čtení a zápis do databáze tabulky, a stovky dalších nástrojů, a je codeable během několika sekund. Nicméně, to přece má řadu nevýhod - je upovídaný, snadné se dostat uniká špatně, bez typu a snadné zlomit, pokud uspořádání sloupců.

Odpovězeno 12/05/2011 v 10:13
zdroj uživatelem

hlasů
6

Zjistili jsme, že protokoly bývají vážné výkonu bolest hlavy. Vytvoření protokol, který nezpomalí svůj veřejný web, je náročné.

Pokud máte velký log a chtějí, aby bylo možné spouštět SQL dotazy vůči ní, aniž by byl pomalý, pak se budete muset indexy na některé sloupce. Každý index přidáte bude výrazně zpomalí vložením nové položky protokolu, což způsobuje problémy zatížení pod vysokým provozem.

Naše technika je:

  • používat základní textový soubor s jednoduchým formátováním jako logu (např: karta oddělené)
  • nepoužívají XML, to dělá věci složitější (např. pomalé) bez jakéhokoliv prospěchu.
  • webová stránka používá soubor zamykání UNIX jednoduše připojit pouze jeden řádek pro každou položku protokolu
  • Cron úlohy vloží obsah protokolu do databáze SQL (používáme MySQL, ale je to jen na vás) každých 10 minut.
  • to má úloha zpracovává soubor jeden řádek najednou, pomocí souboru UNIX zamykání, aby se zabránilo zápisy do protokolu, zatímco je zpracováván ale dávat veřejné stránky šanci zasáhnout protokol po každém řádku je zpracován a odstraněn ze souboru (jak to dělat ve svém preferovaném jazyce by bylo pěkné druhé otázce pro přetečení zásobníku)
  • se má úloha má časový limit 5 minut (tedy každých 10 minut, stráví maximálně 5 minut, zpracování protokolu. Tím je zajištěno, server není na neurčito zpracovat soubor protokolu, pokud existují problémy s výkonem)

To nám umožňuje rychlý záznam položky protokolu, aniž by byla obětována naše indexy v tabulce log, což nám rychlé dotazy SQL proti tabulky log stejně.

Byli jsme to s použitím po dobu asi 6 nebo 7 let na různých serverech CentOS, a to bylo pevné jako skála. Dovedu si představit v závislosti na tom, jaký operační systém a jak je nastaveno, mohlo by to být dobrý způsob, jak vytvořit soubory protokolu. Ale funguje to skvěle v našich testech.

PS: Já nevidím žádný bod při vytváření souborů čitelný. Budete jen někdy četl při ladění, a pak už nikdy znovu dotknout.

Odpovězeno 12/05/2011 v 10:26
zdroj uživatelem

hlasů
2

Vyvíjíme nástroje databáze a my bychom chtěli psát log soubor ve formátu, který je rozšiřitelný a snadno být importována do databázové tabulky. Všichni cítíme, že filtrování tuto informaci pomocí SQL je to dobrý nápad, protože log bude dlouhý souboru a „hledání“, nemusí být dost dobrý. Mohl byste mi dát nějaké návrhy?

Za předpokladu, že jste z nějakého důvodu za to, že vložením přímo do databázové tabulky ...

„Rozšiřitelný“

  • budete chtít mít metadat (názvy polí a / nebo typů) v samotných souborech
    • mohlo by to vám umožní vytvořit obecný a do značné míry budoucnost důkaz DB nástroj pro import, který vytvoří a naplní strukturu databáze založené na souboru protokolu (spíše než něco pevně spojený, které je třeba upravovat, protože formát souboru protokolu se vyvíjí)
  • formát protokolování záznam, který supoprts hierarchickou strukturu lze rozšířit snadněji a čistě

"Easy to be imported"

  • buď chtít některé velmi časté formát podporovaný 3rd party nástrojů / knihovny (XML, CSV, SQL INSERT nebo cokoliv tabulky dump formát SQL nástroje podpory), nebo něco velmi jednoduché, můžete snadno psát a udržovat

XML je jasnou volbou, potenciální negativa jsou:

  • mnohomluvnost
  • výkon
  • čitelnost

Žádný z nich jste vyjádřil znepokojení v době, kdy jsem začal psát tento.

Nějaké zkušenosti budou užitečné taky!

Používáme kombinaci XML a dalších formátů v našich protokolech (některé objekty mají XML serializace rutiny, ale celkově není soubor XML) ... je to bolest, protože nemůžete používat nástroje XML v souboru jako celku, a formát je dost složité zmařit snadnou a spolehlivou rozebrat, aniž by správné nástroje. Takže jít celé prase nebo vůbec ne.

Odpovězeno 12/05/2011 v 11:15
zdroj uživatelem

hlasů
1

Jako Nevím přesně, jak bude uložena v databázi nebo někde jinde, myslím, že by vytvoření takové vypočitatelný formát a učinit z něj interpretovatelné pomocí nástroje aplikovat v databázi nebo vytvořit dokument s.

Například bych vytvořit jednoduchý formátu xml, nebo něco více čitelné, když potřebuji lidi číst přímo do původního formátu. V opačném případě bych použít xml.

Dokument by poskytoval informace, které by byly alespoň datum, čas, název modulu, log level a zprávu. mohou být přidány další informace a možná ingnored pomocí konverzní nástroje.

Pak bych napsat konverzní nástroj pro databázi, možná některé python skriptů, které by analyzovat XML soubor a aplikovat na data v databázi. Tento nástroj zcela závisí na kontextu.

Také bych snad napsat skript pro generování html pohled na log.

Hlavní myšlenkou je mít pochopitelné formátu, který lze snadno používat různé nástroje. Že formát bude poskytovat pouze syrové informace, co nejvíce informací podle potřeby. Tak konverzní nástroje budou rozhodovat, co stojí za to, kde a jak dát dat Wich z protokolu.

Odpovězeno 12/05/2011 v 10:12
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more