Az IIS log kigazolása

Jól működő weboldal esetén az ember ritkán nézi a webszerver naplóját, hiszen a durva hibák úgyis megjelennek a Windows eseménynaplójában, a forgalmi statisztikákat pedig a Google Analytics adja közvetlenül. Ha viszont mégis bele kell kukkantani, jön az elszörnyedés, mi ez a sok szemét és hova bújt a lényeg? Íme néhány tipp a webkiszolgáló naplójának tisztán tartásához.

Aranyszabály: amire soha nem leszünk kíváncsiak, azt ne naplózzuk!

A gyakorlatban ez általában azt jelenti, hogy nem érdekelnek a .jpg, .gif., .png, .js és .css fájlokra érkező HTTP kérések. Érdekelnek a letöltések, az oldal lekérések, hogy a böngészők megtalálták-e a favicon.ico fájlunkat, de képek, szkriptek és stíluslapok lekérését még soha nem akartam visszakeresni. Egy fotóblog vagy galéria oldalnál biztosan akarnám, olyanom viszont nincs.

A naplózást IIS6-ban ki lehet kapcsolni a Log visits kapcsolóval a webkiszolgáló minden szintjén, a beállítás öröklődik lefelé:

IIS 6: Log visits

IIS 7 esetén azonban a grafikus felületen nem fogunk ilyen nevű kapcsolót találni. Sőt, amikor először megnézzük egy mappa vagy webhely Logging beállításait minden vezérlő kikapcsolt állapotban lesz, a lényeg azonban ott virít jobb oldalon:

IIS 7: Disable logging

Ha itt kikapcsoljuk a loggolást, ez fog beíródni az applicationHost.config fájlba:

    <location path="Default Web Site/images">
        <system.webServer>
            <httpLogging dontLog="true" />
        </system.webServer>
    </location>

Látható, hogy a lényeg a httpLogging elem, a célra tartást pedig a location elemmel végezhetjük el. Ha már ezt tudjuk, takarítsuk el az ASP.NET .axd handlereit a logból. Írjuk például ezt a saját alkalmazásunk gyökér web.configjába:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>

        <!-- Szokásos részek... -->

        <location path="ScriptResource.axd">
            <system.webServer>
                <httpLogging dontLog="true" />
            </system.webServer>
        </location>
        
        <location path="WebResource.axd">
            <system.webServer>
                <httpLogging dontLog="true" />
            </system.webServer>
        </location>
    </configuration>

Megsúgom, ebből baj lesz. Mégpedig azért, mert a httpLogging szekció alapértelmezés szerint nincs delegálva, tehát csak az applicationHost.config fájlban szerkeszthető. A jutalmunk egy szép HTTP Error 500.19:

The requested page cannot be accessed because the related configuration data for the page is invalid.

This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

Ha hasonlóan a képek naplózását tiltjuk le, azt fogjuk tapasztalni, hogy az oldalaink betöltődnek, csak éppen a képek fognak hiányozni róluk.

Ha jól végiggondoltuk, hogy ezt a lehetőséget inkább a webhely gazdájának kezébe adnánk, irány a Feature Delegation az IIS Managerben, billentsük át a Logging sort Read/Write-ra:

IIS 7: Logging feature delegation

Ettől kezdve location tag nélkül is tehetünk web.config fájlokat például a css vagy images mappáinkba.

Sajnos a location nem ismerni a wildcardokat, nem tudjuk tehát egyszerűen kizárni a webhelyünkhöz tartozó összes .jpg fájlt. Ezért érdemes úgy szervezni a fájljainkat, hogy a naplózásból tiltandó fájlok egy mappában vagy annak almappáiban legyenek.

Az IIS 7-ben megtehetjük azt is, hogy csak a sikertelen kéréseket naplóztatjuk, azaz ahol a HTTP status code 400 vagy nagyobb. Ehhez a httpLogging szekcióban használjuk a selectiveLogging=”LogError” attribútumot.



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2009.01.07. 12:25:40 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • ASP.NET 4: fogyókúrán a web.config

    Balássy György (MS RD, ASP.NET MVP, MCTS) Aki hosszabb ideje foglalkozik már az ASP.NET-tel, annak biztosan feltűnt, hogy minden verzióval jelentősen hízott a web.config. Elég csak létrehozni egy új webhelyet Visual Studioban és kapunk egy több képernyős konfig fájlt, ami ráadásul szinte minden webalkalmazásnál ugyanaz. A beállítások többségéhez többnyire hozzá sem nyúlunk (tegye fel a kezét, aki kiszedte a .vb fájlok fordítására vonatkozó beállításokat egy C# projektből), viszont nap mint nap kerülgetjük. A helyzet az IIS 7-tel csak “rosszabbodott”, hiszen Windows Server 2008-on már a webkiszolgáló beállításai is a web.configba kerülnek. Tovább »
  • Olaszország 2007

    Dávid Zoltán Velence, Verona, Garda tó, Tenno, Arco, túrázás, kemping. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások