abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    dnes 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 4
    včera 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | IT novinky

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 1
    včera 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | IT novinky

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 2
    včera 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

    Ladislav Hagara | Komentářů: 1
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (6%)
     (10%)
     (10%)
    Celkem 286 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Log4j 2.17.0

    Bezpečnostní chyba CVE-2021-44228 pojmenována Log4Shell v Apache Log4j 2 byla opravena v Log4j 2.15.0. Záhy se ale zjistilo, že ne zcela. Bezpečnostní chyba CVE-2021-45046 byla opravena v Log4j 2.16.0. Další bezpečnostní chyba CVE-2021-45105 byla opravena v Log4j 2.17.0.

    19.12.2021 08:00 | Ladislav Hagara | Bezpečnostní upozornění


    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    19.12.2021 11:39 Když Java tak JavaScript
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Tak já raději počkám na 2.18.1...
    19.12.2021 14:02 David
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    A ani to nebude stačit.
    Jendа avatar 19.12.2021 15:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Také jste naletěli na to že dvě dávky patche na Log4j budou stačit? Už to nestačí, už je třetí. Co bude dál? Keep complying, idiots!
    xkucf03 avatar 19.12.2021 15:54 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Příloha:
    I Miloš Zeman je pro povinné patchování…
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    19.12.2021 18:49 _
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Já bych neopatchované počítače odpojoval od internetu.
    19.12.2021 22:05 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Jedno očkování tam zůstalo :-)
    Quando omni flunkus moritati
    20.12.2021 16:07 alkoholik | skóre: 40 | blog: Alkoholik
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Kdepak, log4j i vakciny jsou naprosto bezpecne!
    19.12.2021 16:14 Michal2
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Me dost udivuje, ze se na to prislo az po tak dlouhe dobe. Kazdemu, kdo pouzil ten jndi lookup muselo hned trknout, ze to muze byt problem. Hlavne to muselo byt jasne tem, co podporu pro to psali. Takova vec v knihovne slouzici k logovani vubec nema co delat nebo alespon ma byt defaultne vypnuta. A to je zasadni problem, hadam, ze 95+ % tech, co tu knihovnu pouzili nemeli ani nejmensiho tucha, co ta vec vlastne vsechno dela. Hele, nasel jsem na netu nejakou knihovnu na logovani. Dokumentace ma 950 stran ale na prvni je napsano, ze staci importnout a pak log.debug("neco se posralo"); a je to! To je bomba, to musim hned pouzit. Ze to ma zkomilovane 15MB? No a co.

    Kazdy, kdo nasadil knihovnu s 170 tisici radky kodu kvuli logovani je u me blazen. Kdo si nevic myslel, ze v takovem bloatwaru zadna dira neni je u me naivni blazen. A kdo si mysli, ze to byla posledni je naivni^2 blazen :-p

    Rad bych se mylil, ale dalsi takova tikajici bomba s RCE potencialem jsou apky nad electronem.
    19.12.2021 22:16 xxx
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    No to je tezky. Ona jakakoliv netrivialni logovaciutulita ma sva uskali. Treba takovy printk(). printk() - The Most Useful Tool is Now Showing its Age
    20.12.2021 11:13 karelI
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    To nekritické využívání knihoven mě dost děsí. Strašně se propaguje, že programátor nemá vymýšlet kolo atd. když už to někdo vyřešil před ním, ale to že to sebou taky nese problémy a rizika se nijak zvlášť neřeší. Ze zkušenosti mohu říct, že až na pár speciálních výjimek jako jsou kodeky se využití externí knihovny v čase vyplácí čím dál méně až to nakonec dojde k bodu, kdy by se víc vyplatilo napsat in-house řešení.

    A věřím, že se to týká i většiny použití téhle Log4J.
    20.12.2021 18:51 BoneFlute | skóre: 3
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Řeší.

    Obecně je lepší, když se napíše knihovna, kterou zkritizuje sto lidí, a vychytají se díky tomu na ní chyby; než když se napíše sto inhouse řešení, které budou mít všechny chyby, a nikdo je neopraví.

    Nemluvě o tom, že můžeš tu knihovnu zhodnotit, vybrati jinou. Zatímco inhouse je stále stejně špatný. Budeš rád, když ti tam někdo udělá review. A to bude spíše zázrak.
    20.12.2021 20:06 karelI
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    A teď realita: někdo zjistí, že na řešenou věc existují knihovny. Vymyslí se tedy kriteria a vybere se ta nejlepší a nadšeně se začne používat. Ve skutečnosti pokrývá potřebnou funkcionalitu asi ze 60% a zároveň obsahuje asi 10x víc kódu, který řeší spoustu dalších věcí které nepotřebujeme.

    Samozřejmě je nutné udělat wrapper kolem API, protože je nutno ztransformovat data na vstupu a výstupu (v horším případě při každém volání).

    Časem se ukáže, že to co pokrývá je vyřešeno dost naivně, takže je nutno dělat další předzpracování dat, odbočky, ohejbáky na narovnáváky.

    V průběhu času se samozřejmě náhodně objevují mystické chyby a nekorektní chování v krajních případech. Po těch letech nikdo nemá sílu to řešit s autory, je to zdlouhavé, rozbilo by to něco jiného apod.

    SW projekty neběží stejnou rychlostí, takže se to postupně rozchází s požadavky na systém, vlastnostmi jazyka, kompileru apod. Je fakt pruda, když vývojáři zvládají "držet krok s dobou", ale jsou závislí na knihovně, která je X let pozadu a oni kvůli tomu musí udržovat starý kompiler, koukat na starý kód, apod.

    Zkrátka, knihovny jsou super věc v raných fázích vývoje, ale časem z toho je kámen na noze, který časem občas vybouchne (čest výjimkám), což pak má dost nepříjemné důsledky pro vývoj celého projektu. Asi nejhorší na tom je, že podobné problémy jsou z povahy věci nepředvídatelné a nemají jednoduchá řešení. S vlastním kódem se i z tohoto hlediska dá pracovat líp.
    20.12.2021 22:41 BoneFlute | skóre: 3
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Je to jak říkáš.

    Na druhé straně, jednoduchá matematika - kód inhouse je furt horší.
    20.12.2021 22:58 karelI
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Proč by měl být horší?
    21.12.2021 04:05 BoneFlute | skóre: 3
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Viz co jsem psal v přechozím komentáři.

    Jediný důvod, kdy má smysl psát si vlastní řešení (po pravdě ale důvod zdaleka ne vzácný) je, když po rešerši vychází, že všechna existující řešení jsou špatná. A i v takovém případě je výhodnější, když se člověk přidá k tomu nejlepšímu špatnému existujícímu řešení a snaží se ho vylepšit. Nebo něco na ten způsob.

    Měl jsem také vlastní řešení ledasčeho. Ale po nějaké době jsem toho mnoho opustil, protože prostě nebylo rozumné si to udržovat, a existující řešení byly (už) dobré.
    21.12.2021 11:38 karelI
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Na začátku samozřejmě platí to o čem mluvíš. Jenže po 15 letech vývoje to skončí ve stavu, kdy místo X potřebných řádků pro danou funkcionalitu máš 10 * X v knihovně (o kterých navíc nic moc nevíš), X/2 kolem ve wrapperech a ohejbácích a dalších X/2 pokrývající případy, které knihovna neřeší.

    Ty konstanty se mohou lišit, ale já za svou praxi bohužel zažil mnohokrát ten moment, že se to překlopilo ve prospěch in-house řešení a je to moment docela mrzutý, protože v tu chvíli už se na tom nedá mnoho změnit.

    A promiň, ale představa, že víc hlav vyprodukuje lepší produkt, zvlášť když je tento 10x větší než co potřebuješ, není úplně samozřejmá. Určitě je na světě pár profláklých výjimek, ale obecně bych na to nespoléhal.
    21.12.2021 15:09 BoneFlute | skóre: 3
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Všechna in-house řešení, která jsem viděl, byla strašná. Mnohá existující (komunitní, knihovní) která jsem viděl jsou strašná. Ta matematika je pro mě jednoduchá.

    Samozřejmě se nebavím o situaci, kdy si člověk chce to řešení napsat sám protože prostě proto. Třeba jako výzvu, nebo si fakt věří, a chce komunitu trumfnout. Ale jako firemní strategii to považuji za velice nerozumné.
    21.12.2021 16:16 j
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Hele, ja s tebou naprozdil od toho druhyho tu naprosto souhlasim, ale mas tu jeden problem. Tu knihovnu primastis a zavolas za 10 minut, kdezto vlastni print do souboru bude trvat 20 ... nekomu kdo vi co dela, a takovyho vetsinou nemas ani jednoho. Takze musis pocitat s tim, ze mas hromadu matlalu, ktery patlaj kod v go, rustu, dzave ... ale ulozit string to souboru/poslat ho na standardni vystup ... to je pro ne prace na 1/2 roku nejmin.

    Taky je na tom uzasny to, ze ty si s tou knihovnou co ji jako strasne nutne potrebujes, pritahnes 20 dalsich, na kterych zavisi prave ona. Jeste zajimavejsi to zacne bejt v okamziku, kdy ty knihovny mas dve, a obe zavisej na jiny "stejny", ovsem kazda chce jinou verzi.

    Jako bonus si pak muzes pricist vyvojare, ktery si ani neprectou zmeny mezi verzema. Trebas soudruzi co jakoze semo tamo (ne)vyviji deluge. Ti zvedli pouzivanou verzi torrentni knihovny, ale uz si neprecetli jak se konfiguruje.

    ---

    Dete s tim guuglem dopice!
    22.12.2021 12:58 MP
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Jo inhouse...

    Mame ve firme par inhouse aplikaci starych 10+ let, vyvojari nemaji cas na vyvoj/upgrade do novych verzi serveru, takze...

    Inhouse je nejhorsi vec (zejmena pro interni veci).
    22.12.2021 13:33 karelI
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Připadá mi, že asi mluvíš o něčem jiném než já (použití knihoven ve vyvíjeném programu, který se prodává).
    xkucf03 avatar 20.12.2021 11:52 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Log4j 2.17.0

    Souhlas, psal jsem něco podobného u předchozí zprávičky.

    Takova vec v knihovne slouzici k logovani vubec nema co delat nebo alespon ma byt defaultne vypnuta.

    Dalo by se to modularizovat. Jádro by bylo minimalistické a ostatní funkcionalita by byla volitelná a vyčleněná do modulů, které by sis nemusel ani instalovat, pokud je nepotřebuješ (výchozí stav).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.12.2021 16:22 j
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Ehm ... kazdej jeden vyvojar si nainstaluje vsechny moduly, protoze proc by se jako mel zaobirat tim, ze mu neco nefunguje, protoze nejakej nema. A uzivatel pak dostane pekne balik se vsim, klidne i se stovkama MB kodu kterej nikdy nepouzije.

    A nemuzu v tomhle ohledu vubec rict, ze bych se divil, zazil sem osobne milionkrat ze neco nekde pinda ze tomu "neco" chybi, neumi se to ovsem vyzveknout co. Napsat totiz 10 radku kodu navic aby se prekontrolovalo co ma a co nema a pripadne to vyblilo ... to by byla prace. Typicky z toho totiz vypadne neco na tema "doslo k neosetrene vyjimce ...".

    ---

    Dete s tim guuglem dopice!
    Heron avatar 20.12.2021 16:42 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Taky jsem to nikdy nepochopil. Pokud chci vypisovat nějaké informace o běhu programu, tak to stačí tisknout na stderr. Vzhledem k tomu, že je to fd stejně jako jakýkoliv jiný soubor, tak to můžu rovnou ukládat i do souboru (pokud chci). Základní logovací infrastruktura je hotová za 10 minut. Čtyři log func: info, warning, error, debug. K tomu třeba jako nástavbu bavičky (kolega je na to ujetej, ten má vlastní logovací knihovnu s barvama).

    Co přesně přinese navíc těch 15MB v log4j fakt nevím.

    Dnes se systemd stačí všechno zvracet na stdout/err a je to přehledně k dispocici. I bez systemd je to přehledně k disposici.

    Pokud bych náhodou potřeboval ty logy odlévat jinam, tak krom řádků print, tam bude ještě sql.execute do DB. Nebo cokoliv. Externí logování vyřešeno za 10minut. Za tu dobu bych nestihl přečíst ani dokumentaci k log4j.
    21.12.2021 00:10 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    To ale jenom ukládáte informace o běhu programu k případnému pozdějšímu zkoumání, ukáže-li se, že je to potřeba. To je naprosto nedostatečné, úplně tím zanedbáváte ten entrprajs.
    Quando omni flunkus moritati
    Heron avatar 21.12.2021 00:31 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Jasně no. A co s tím máme dělat? Tisknout do novin? Ale předpokládám, že jako obvykle nám nesdělíte, co s logy děláte vy. Enterprise neznám (naučte se psát, když poučujete ostatní), používáme Voyager. Asi špatně.
    21.12.2021 08:43 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Možná bude lepší, když v klidu posnídáte a pak použijete hlavu.
    Quando omni flunkus moritati
    xkucf03 avatar 21.12.2021 01:01 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji

    Sice souhlasím, že by se to s knihovnami nemělo přehánět a když už, tak by to nemělo být monstrum, ze kterého využiješ jen pár procent funkcionality a zbytek tě buď brzdí nebo dokonce ohrožuje (viz zrovna tahle chyba)… Ale na druhou stranu to, co píšeš ty, je opačný extrém, který přináší zase jiné problémy.

    Pokud to má být nějaká malá utilitka, která sem tam něco vypíše a člověk to buď sleduje v terminálu nebo se občas podívá do logu a těch pár řádků si prostuduje… tak budiž – tohle jde dělat zcela na koleně, jen s tím, že na začátek řádku hodíš datum a čas a za něj nějakou zprávu.

    Ale pokud je ta aplikace jen trošku větší a těch logů je víc, tak začneš řešit různé další problémy a implementovat si všechno ručně ti přidělá zbytečně práci – to po použití nějaké knihovny vyloženě volá. Ideálně by ta základní logovací funkcionalita měla být ve standardní knihovně, součást aplikačního serveru atd. Co se týče těch funkcionalit, tak nějak v náhodném pořadí, co mne zrovna napadá:

    • chceš mít různé úrovně logování
    • chceš mít možnost je v konfiguraci zapínat a vypínat, ideálně i za běhu (představ si hodně zatíženou aplikaci, která by toho v ladícím režimu logovala neskutečně mnoho – tu aplikaci nechceš kvůli tomu restartovat a nechceš v téhle úrovni logovat moc dlouho)
    • zrovna třeba u toho log4j je výhoda v tom, že ho spousta adminů umí konfigurovat, už to někdy viděli, a nemusí volat programátora, prostě si to logování zvládnou nastavit sami (což by u toho tvého na míru ušitého logovacího systému nezvládli, protože by ho viděli poprvé v životě – v lepším případě by existovala dokumentace, kterou by si museli nastudovat, a šlo by nastavit, co potřebují)
    • ideálně potřebuješ to logování omezit na nějaký modul, třídu, balíček… opět proto, aby toho nebylo zbytečně moc (zpomalení, místo na disku, potenciální únik citlivých dat…)
    • není dobré nad tím uvažovat jako nad proudem bajtů, ale jako nad posloupností zpráv – měl bys být schopný spolehlivě rozlišit, kde jedna zpráva začíná a kde končí, neměl by ti to žádný vstup/hodnota rozbít (konce řádků, uvozovky atd.) tzn. nechceš jen blít bajty na STDOUT, ale spíš někam posílat/vkládat objekty/záznamy
    • i to sestavení logovací zprávy stojí nějaký výkon (provolání nějakých metod/funkcí, nakopírování hodnot z jedné části paměti do druhé, poslepování řetězců…) a tohle chceš dělat jen tehdy, pokud je příslušná úroveň logování zapnutá; týká se to i obyčejného dosazení hodnot do formátovacího řetězce – tzn. vstupem logovací funkce by neměl být jeden textový řetězec (který bys musel sestavovat vždy), ale vzor zprávy + pole parametrů, které se dosadí/vyhodnotí až v případě potřeby; líné vyhodnocování
    • zprávy můžeš chtít posílat i jinam než do souboru – do syslogu, do Kafky, vkládat do databáze, obarvit ANSI sekvencemi a vypsat v terminálu atd. logovací knihovna by k tomuhle měla poskytovat abstraktní rozhraní a mělo by jít volitelně přidávat různé jeho implementace (až je budeš potřebovat, než že tam budou přibalené povinně pro všechny)
    • není od věci nějak globálně filtrovat/zahvězdičkovávat citlivé údaje – typicky v případě, že se logují celé požadavky a odpovědi na vstupu/výstupu
    • může to být asynchronní, aby to nebrzdilo hlavní vlákno/proces programu
    • aplikace dost možná poběží ve více vláknech nebo procesech a ty chceš logovací zprávy poskládat např. do jednoho souboru, aniž by se ti náhodně prolínaly
    • můžou tam být různé výhybky, rozdvojky, zálohy… např. když se nepodaří zalogovat do databáze nebo do Kafky, tak se zpráva vloží aspoň do lokálního souboru; když dojde místo na disku, tak se pokusíme logovat někam jinam atd.
    • zajištění integrity logů, možná šifrování (volitelně)

    Určitě by se z toho neměl stát moloch, v základu by mělo být jen to nejnutnější + abstraktní rozhraní, která může volitelně někdo implementovat a přidat svůj modul. Ale na druhou stranu nedává smysl snažit se celé logování zjednodušit na jednu funkci s jedním textovým parametrem, která před něj akorát přilepí datum a čas a vyplivne to na standardní výstup.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Heron avatar 21.12.2021 01:12 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    Ano a proto používám knihovní balíček golang.log. Který se umí elegantně nechat rozšířit přes interface{} nebo přes func receiver.

    Jinak nemyslím si, že tohle všechno co píšeš, má dělat logger v programu. Ten by měl posílat zprávy do externí komponenty a ta řešit vše, co navrhuješ.
    Heron avatar 21.12.2021 08:15 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    Jinak díky za tyhle dlouhý komentáře. Sice to vypadá, že spolu nesouhlasíme, ale pocházíme z různýho prostředí (asi). Vidím to teď v jobu, hromada linuxáků, ale všichni používají téměř výhradně GUI. Celkem srandovní situace, kdy po našem vývojáři chci udělat rozšíření do CLI utility a on se zeptá k čemu to potřebuju, že je k tomu GUI ekvivalent. Tak mu musím na půl stránky* popsat jak by se to dalo využít lépe a efektivněji. Je to super, on má svůj GUI svět, já naopak CLI. Nakonec teda vzniklo obojí. Když jsem kolegům vysvětlil v čem je to efektivnější, tak jsou rádi a už si navrhují další změny.

    Tomu co píšeš moc nerozumím (teď prostě nemám energii a ani chuť nad tím víc přemýšlet). Ale tyhle věci imho patří do externí komponenty. To cos popsal mi spíš vychází jako práce pro message queue.
    když se nepodaří zalogovat do databáze nebo do Kafky, tak se zpráva vloží aspoň do lokálního souboru
    Jasně, a když se nepodaří zalogovat do souboru, protože ENOSPC tak to pošle poštovního holuba? Někde se to utnout musí. Pro moji práci už dneska bohatě stačí jen stderr a nechat to zpracovat v systemd / journald. Zas tak často do těch logů nelezu.

    *) Tohle je taky super. On je v jiné zemi, česky neumí, já neumím jeho řeč a úroveň naší psané angličtiny se liší. Takže jsme si museli vypracovat slovník. Stále to někde dře ale lepší se to. Důležitá je ta iteraci, když něco někdo z nás pochopí špatně, tak se to rychle napraví (kde rychle je v tomto případě v řádech dnů).

    21.12.2021 16:32 j
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    To co pises neni vec aplikace, to je vec logdemona, tudiz to v aplikaci vubec nema co pohledavat.

    Uplne stejne totiz muzu mezi ty tvoje pozadavky zaradit, ze se na to da pripojit po siti, a ty logy cist/stahovat ... a voiala, uz z toho mame rovnou server co posloucha na nejakym portu.

    Pak by to taky melo kreslit grafy, a malovat obrazky vysmatych rodinek - aby ze to dalo rovnou predkladat managorum.

    ---

    Dete s tim guuglem dopice!
    xkucf03 avatar 22.12.2021 11:38 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    To co pises neni vec aplikace, to je vec logdemona, tudiz to v aplikaci vubec nema co pohledavat.

    Tak to přeji hodně štěstí při řešení např. těchto problémů mimo aplikaci:

    • chceš mít možnost je v konfiguraci zapínat a vypínat, ideálně i za běhu (představ si hodně zatíženou aplikaci, která by toho v ladícím režimu logovala neskutečně mnoho – tu aplikaci nechceš kvůli tomu restartovat a nechceš v téhle úrovni logovat moc dlouho)1
    • není dobré nad tím uvažovat jako nad proudem bajtů, ale jako nad posloupností zpráv – měl bys být schopný spolehlivě rozlišit, kde jedna zpráva začíná a kde končí, neměl by ti to žádný vstup/hodnota rozbít (konce řádků, uvozovky atd.) tzn. nechceš jen blít bajty na STDOUT, ale spíš někam posílat/vkládat objekty/záznamy
    • i to sestavení logovací zprávy stojí nějaký výkon (provolání nějakých metod/funkcí, nakopírování hodnot z jedné části paměti do druhé, poslepování řetězců…) a tohle chceš dělat jen tehdy, pokud je příslušná úroveň logování zapnutá; týká se to i obyčejného dosazení hodnot do formátovacího řetězce – tzn. vstupem logovací funkce by neměl být jeden textový řetězec (který bys musel sestavovat vždy), ale vzor zprávy + pole parametrů, které se dosadí/vyhodnotí až v případě potřeby; líné vyhodnocování
    • může to být asynchronní, aby to nebrzdilo hlavní vlákno/proces programu
    • aplikace dost možná poběží ve více vláknech nebo procesech a ty chceš logovací zprávy poskládat např. do jednoho souboru, aniž by se ti náhodně prolínaly

    [1] tady sice můžeš říct, že aplikace bude logovat vše a v logovacím démonu si vybereš jen něco a zbytek zahodíš, ale u vytíženějších aplikací nebo u ladících/trasovacích logů to takhle opravdu dělat nejde, protože je to obrovský objem dat a už jen jeho přelití z jednoho procesu do druhého přes STDIO tě stojí zbytečně moc

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Heron avatar 22.12.2021 14:14 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    chceš mít možnost je v konfiguraci zapínat a vypínat, ideálně i za běhu (představ si hodně zatíženou aplikaci, která by toho v ladícím režimu logovala neskutečně mnoho – tu aplikaci nechceš kvůli tomu restartovat a nechceš v téhle úrovni logovat moc dlouho)1
    Tohle umí programy odjakživa, nastavit loglevel a poslat signál pro reload nastavení. Nemusí se to restartovat.
    není dobré nad tím uvažovat jako nad proudem bajtů, ale jako nad posloupností zpráv – měl bys být schopný spolehlivě rozlišit, kde jedna zpráva začíná a kde končí, neměl by ti to žádný vstup/hodnota rozbít (konce řádků, uvozovky atd.) tzn. nechceš jen blít bajty na STDOUT, ale spíš někam posílat/vkládat objekty/záznamy
    Souhlasím. Přesto přístup co řádek to zpráva funguje na celkem velkou oblast problémů. Proto se to taky už těch několik desítek let používá.
    i to sestavení logovací zprávy stojí nějaký výkon (provolání nějakých metod/funkcí, nakopírování hodnot z jedné části paměti do druhé, poslepování řetězců…)
    Kolik těch dat chceš logovat? 100GB na zprávu? Dělal jsem benchark spojování řetězců vs. string builder v golangu a nemá smysl to řešit. Všude se píše, používejte SB. No je o pár procent rychlejší, ale když mám spojit 8 stringů, tak to udělám operátorem '+'. Do milionu zpráv je to nerozeznatelné. Ano, možná kdyby někdo spojoval opravdu hodně (tisíce) opravdu velkých stringů, tak SB dává smysl. Jinak si vybrat to, co je nejelegantnější.
    může to být asynchronní, aby to nebrzdilo hlavní vlákno/proces programu
    No jasně. Jak jinak.
    aplikace dost možná poběží ve více vláknech nebo procesech a ty chceš logovací zprávy poskládat např. do jednoho souboru, aniž by se ti náhodně prolínaly
    Yop.

    xkucf03 avatar 22.12.2021 12:12 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji

    P.S. Jinak je ale zajímavé, jak široké rozpětí lidí/názorů tady je. Někdo přibalí k aplikaci hromadu knihoven, webový prohlížeč, Python i NodeJS zároveň atd., vyrobí neskutečný bloatware a vůbec mu to není divné nebo si v tom ještě libuje. A pak někdo jiný si představuje, jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčku1. Ani jeden z těch extrémů není dobrý.

    [1] to se netýká jen zdejších diskutujících, obecně se stále píše hodně aplikací v céčku, i když by řešená úloha zasluhovala nějaký vyšší programovací jazyk… zřejmě proto, že jsou ti lidé zvyklí psát v céčku, umí ho a mají nějaký mentální blok používat něco vyššího/složitějšího… ale ve výsledku ta komplexita jen vybublá v kódu jejich aplikace, který museli napsat

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    22.12.2021 12:58 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji

    P.S. Jinak je ale zajímavé, jak široké rozpětí lidí/názorů tady je. Někdo přibalí k aplikaci hromadu knihoven, webový prohlížeč, Python i NodeJS zároveň atd., vyrobí neskutečný bloatware a vůbec mu to není divné nebo si v tom ještě libuje. A pak někdo jiný si představuje, jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčku1. Ani jeden z těch extrémů není dobrý.

    IMHO to neni moc prekvapive, protoze to zavisi asi prevazne na zkusenostech - lidi z obou dvou extremu toho asi bud moc nenaprogramovali nebo se celou dobu pohybuji v nejake specificke oblasti, kde ani jedno nevadi (bloatware nebo logavat uplne vsechno vzdy a pak to pripadne jinde fitlovat). Kazdopadne za me +1 tomu, co pises.
    Heron avatar 22.12.2021 13:51 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    Ani jeden z těch extrémů není dobrý.
    Proč si myslíš, že je to extrém? Opravdu denně pracuju se službama, které mají velmi jednoduchý log a některé z nich logují opravdu jen do stderr a stdout. Nebo postaru ještě do souboru a potom se řeší logrotate a jejich reload.

    Nginx mám tak nastaven, php-fpm také, svoje programy taky (REST služby - vrstva mezi DB a klientem). Postgresql si píše deníček do vlastních souborů. Moje vlastní programy jsou cli utilitky nad nějakými daty, rest server, pokud existuje, nebo rovnou postgres. Dělá to přesně to co chci.
    A pak někdo jiný si představuje
    Já si to nepředstavuju, je to moje praxe posledních 15 let.
    jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčku
    Nevím co tím "vše" myslíš. Ale pro naše účely bohatě stačí stderr/stdout. Klidně napiš z jakého prostředí vycházíš a proč tohle u tebe nestačí. Rád si to přečtu.

    Banka? Nutnost auditu? Když jsem spravoval běh služby v certifikovaném prostředí, tak se logy ukládaly do DB, časové razítko, podpis. Table měla na konci provozu 90GB. Za celou dobu provozu jsem jen přidával další disky do LVM. VMko s DB mělo tuším něco jako 600GB.

    Podle mého v tom lidi hledají zbytečnou vědu. Já jako admin (jsem věčně se vším nespokojenej) jsem říkal, že by se to mělo optimalizovat. Jednatel šel a koupil tehdy 4x600GB Intel DC SSD, dal to do ESX a vmko mělo luxusní běh na 2TB SSD polem (R10). Vyřešeno. Sice to vyřešil jinak, než jsem chtěl, ale usoudil že HW je levný. Běželo to bez jediného problému po celou dobu konsese / certifikace / provozu (2012-2017). Co víc potřebuješ?
    22.12.2021 23:08 BoneFlute | skóre: 3
    Rozbalit Rozbalit vše Re: logování obecně, komplexita, knihovny, dělat věci tak jednoduše, jak je to jen možné – ale ne jednodušeji
    Právě jsem se po letech vrátil k C++ [1]. Protože musím. Do které kategorie patřím? :)

    [1]: Nemám C/C++ rád, a od dob Rustu ho považuji za mrtvou věc.
    19.12.2021 17:17 Xerces
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Ještě že u nás používáme verzi 1.
    xkucf03 avatar 19.12.2021 17:31 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Log4j 2.17.0

    Pokud to nebylo myšleno ironicky: Log4j 1.x had reached end of life

    On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life.

    A security vulnerability, CVE-2019-17571 has been identified against Log4j 1. Log4j includes a SocketServer that accepts serialized log events and deserializes them without verifying whether the objects are allowed or not. This can provide an attack vector that can be expoited. Since Log4j 1 is no longer maintained this issue will not be fixed. Users are urged to upgrade to Log4j 2.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    19.12.2021 20:40 Xerces
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Tak jasně že to je děravý, ale naštěstí kolem toho není takový humbuk, takže to nikdo neřeší. :-)
    19.12.2021 22:45 podlesh
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Hlavně SocketServer nelze použít omylem, nebo dokonce nevědomky. Je to něco co se musí explicitně spustit a nechat poslouchat na nějakém otevřeném portu... a kdo něco takového udělá, tak dostane co si zaslouží :-)
    19.12.2021 23:23 ..$
    Rozbalit Rozbalit vše Re: Log4j 2.17.0
    Ještě že u nás používáme tracing...

    Založit nové vláknoNahoru


    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.