Electronic Personnel Attendance System

Documenti pubblici, digitali.

9.6. Configurazione dei log di ePAS

I log in ePAS sono gestiti tramite la Log4J e la loro configurazione può essere

effettuata tramite alcuni parametri impostabili nel docker_compose.yml.

È possibile utilizzare quattro tipo di appender diversi a cui inviare i log: stdout, stderr, file e graylog2.

Tramite il docker compose è possibile configurare il livello dei log, gli appender da utilizzare e gli eventuali parametri per l'invio dei log ad un graylog server esterno.

#  [...]
 - environment:
#  [...]
#      - LOG_LEVEL=                            # Opzionale. default: INFO   -- (OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL)
       - APPENDERS=file                        # Opzionale. default: stdout, stderr -- (stdout, stderr, file, graylog2). Abilita i log sulla console, file e server graylog
#      - GRAYLOG_HOST=                         # Obbligatorio se attivato log sull'appender graylog2. default: null
#      - GRAYLOG_PORT=                         # Opzionale. default: 3514
#      - GRAYLOG_ORIGIN_HOST=                  # Opzionale. default: valore in VIRTUAL_HOST

Se non specificato tramite la variabile APPENDERS gli appender abilitati di default sono stdout e stderr che inviano i log sullo standard output e standard error a seconda del livello di log (ERROR e FATAL vanno su stderr).

Gli appender possono essere combinati tra di loro, nel senso che possono essere abilitati più appender contemporanemente, per utilizzare più appender scrivere i nomi degli appender separati da virgola (es.: APPENDERS=file, graylog2).

9.6.1. Appender di tipo stdout e stderr

Gli appender di tipo stdout e stderr inviano i log sullo standard output e standard error a seconda del livello di log (ERROR e FATAL vanno su stderr).

La configurazione specifica per questi appender da impostare nel file log4j.prod.properties è la seguente:

# Standard output appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p](%c) - %m%n
log4j.appender.stdout.filter.a=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stdout.filter.a.LevelMin=DEBUG
log4j.appender.stdout.filter.a.LevelMax=WARN

# Standard error appender
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p](%c) - %m%n
log4j.appender.stderr.filter.a=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stderr.filter.a.LevelMin=ERROR
log4j.appender.stderr.filter.a.LevelMax=FATAL

9.6.2. Appender di tipo file

Nel caso si utilizzi l'appender di tipo file i log vengono salvati all'interno del container nel file log/epas.log, si consiglia quindi di effettuare all'interno del docker-compose.yml un mapping del volume tipo:

# [...]
volumes:
  - ${PWD}/logs:/home/epas/epas/logs

I log sono di tipo DailyRollingFileAppender, quindi vengono ruotati automaticamente ogni giorno.

La configurazione specifica per questo appender da impostare nel file log4j.prod.properties è la seguente:

log4j.appender.file.Threshold=DEBUG
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/epas.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p](%c) - %m%n

9.6.3. Appender di tipo Graylog

Le informazioni sull'host graylog a cui inviare i log sono configurabili tramite i parametri: GRAYLOG_HOST, GRAYLOG_PORT e GRAYLOG_ORIGIN_HOST, vedere i commenti nel docker-compose.yml per maggiori informazioni.

La configurazione specifica per questo appender da impostare nel file log4j.prod.properties è la seguente:

# Define the graylog2 destination
log4j.appender.graylog2=org.graylog2.log.GelfAppender
log4j.appender.graylog2.graylogHost={{GRAYLOG_HOST}}
log4j.appender.graylog2.graylogPort={{GRAYLOG_PORT}}
log4j.appender.graylog2.originHost={{GRAYLOG_ORIGIN_HOST}}
log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout
log4j.appender.graylog2.extractStacktrace=true
log4j.appender.graylog2.addExtendedInformation=true
log4j.appender.graylog2.additionalFields={'environment': 'PROD', 'tag': 'epas'}