# IIS

##
Stringa di formato per i log di accesso

###
File di configurazione

Il file di configurazione è generalmente:

`C:\inetpub\logs\LogFiles\<YourSiteName>`

I log di accesso possono essere configurati tramite il Gestore IIS.
Per aprire il Gestore IIS, vai in `Pannello di controllo`→`Strumenti di amministrazione`→``→`Internet Informations Service (IIS) Manager`.
Una volta entrato, clicca su `Logging` per modificare le impostazioni.

### Moduli di formato dei log

I formati disponibili (supportati LogDoctor) sono:

- IIS

Valori separati da virgole, non può essere personalizzato. Il nome del file risultate di solito è qualcosa come `u_in<DATA>.log`

- NCSA

Valori separati da spazi, non può essere personalizzato. Il nome del file risultate di solito è qualcosa come `u_nc<DATA>.log`

- W3C

Valori separati da spazi, può essere personalizzato scegliendo di quali campi effettuare il log. Il nome del file risultate di solito è qualcosa come `u_ex<DATA>.log`

### Formati suggeriti

Il formato suggerito è quello del modulo W3C, in quanto è l'unico che consente di usufruire a pieno delle funzionalità di LogDoctor.

I campi suggeriti sono i seguenti:

`date`, `time`, `cs-method`, `cs-uri-stem`, `cs-uri-query`, `c-ip`, `cs-version`, `cs(User-Agent)`, `cs(Cookie)`, `cs(Referer)`, `sc-status`, `sc-bytes`, `cs-bytes`, `time-taken`

### Stringa di formato

Sia il modulo IIS che NCSA sono predefiniti, quindi LogDoctor non necessita che venga specificata una stringa di formato.
Il modulo W3C può invece essere personalizzato ed è quindi necessario specificare la stringa di formato. Essa può essere trovata in ogni file di log creato da questo modulo, cercando la linea che inizia con `#Fields:`.

##
Campi di lod per W3C

###
Campi considerati da LogDoctor

Gli unici campi considerati sono quelli che seguono, ovvero solo i dati di questi campi verranno salvati nel database ed usati per le statistiche.

Codice | Informazioni
--- | ---
date | Data in cui si è verificata l'attività (UTC).
time | Orario in cui si è verificata l'attività (UTC).
cs-version | Il protocollo della richiesta (HTTP/v, HTTPS/v).
cs-method | Il metodo della richiesta (GET, POST, HEAD, ...).
cs-uri-stem | L'URI richiesto, senza la stringa di query.
cs-uri-query | La stringa di query (se presente).
sc-status | Codice dello Status HTTP.
cs-bytes | Numero di Byte ricevuti ed elaborati dal server.
sc-bytes | Numero di Byte inviati dal server.
time-taken | Il tempo necessario per servire la richiesta, in millisecondi
cs(Referer) | Il sito che ha fornito il collegamento per questo sito.
cs(Cookie) | Contenuto del cookie inviato o ricevuto (se presente).
cs(User-Agent) | Stringa di identificazione del browser o del bot
c-ip | Indirizzo IP del client che ha eseguito la richiesta.

### Campi scartati da LogDoctor

Ogni campo eccetto i precedenti verrà scartato da LogDoctor.
Nella generazione di una stringa di log di esempio, questi campi appariranno come 'DISCARDED'.
Se non utilizzi i log per altri propositi, è consigliato rimuovere questi campi per velocizzare il processo e ridurre le possibilità di errore.

### Riferimenti

- Configurazione dei log di IIS:
  https://docs.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis
- Presentazione dei moduli di log:
  https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms525807(v=vs.90)
- Il modulo di log per il formato W3C:
  https://docs.microsoft.com/en-us/windows/win32/http/w3c-logging