#!/bin/bash

# This script is meant to be launched by the doloforge report system.
# It does analyse the error logs, and creates a report.
#
# Testing usage:
#   ./bin/report_error mason error 20091104 20091104 day mason/_stats/.error/history/2009/11/05_day mason/_logs/error.log.20091104.gz
#   (OPATH=$(pwd); cd ./t/srv/doloforge/shared/internal/sandbox/; source _conf/project_env.sh; set -a; REP_SERVICE=mason; REP_REPORT=error; REP_DATE_RUN=20091105; REP_DATE_START=20091104; REP_DATE_END=20091104; REP_INTERVAL=day; REP_OUTPUT_DIR=mason/_stats/.error/history/2009/11/05_day; REP_LOG_FILES=mason/_logs/error.log.20091104.gz; $OPATH/bin/report_error $REP_SERVICE $REP_REPORT $REP_DATE_START $REP_DATE_END $REP_INTERVAL $REP_OUTPUT_DIR $REP_LOG_FILES)
# Available environment variables:
#   - the ones from project_env.sh
#   - REP_SERVICE or $1 : "mason"
#   - REP_REPORT or $2 : "error"
#   - REP_DATE_RUN : "20091105"
#   - REP_DATE_START or $3 : "20091104"
#   - REP_DATE_END or $4 : "20091104"
#   - REP_INTERVAL or $5 : "day"
#   - REP_OUTPUT_DIR or $6 : "mason/_stats/.error/history/2009/11/05_day"
#   - REP_LOG_FILES or $7 : "mason/_logs/error.log.20091104.gz" or space-separated list of files

#[ "$CLIENT" = 'internal' ] || exit 0

(
    echo Analysing files $REP_LOG_FILES
    echo Report stored in $REP_OUTPUT_DIR
    echo Number of error lines $(zcat $REP_LOG_FILES | wc -l)
    echo Top errors:
    zcat $REP_LOG_FILES | sed -e 's/\[[^]]*\]/[DATE]/' -e 's/^[^ ]*/[IP]/' | sort | uniq -c | sort -nr | head -20
) > $REP_OUTPUT_DIR/index.txt
