import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Logtest {
	public static void main(String args[]){
		Logger oLog = Logger.getLogger("root");
		Logger oLogGen = Logger.getLogger("root.general");
		Logger oLogCfg = Logger.getLogger("root.general.config");
		Logger oLogFileOK = Logger.getLogger("File");
		PropertyConfigurator.configure("log.properties");

		oLogGen.debug("Starting program");

		if (args.length!=1) {
			oLogCfg.error("Error: missing parameter");
			System.exit(0);
		}
		int n = 0;
		try {
			n = Integer.parseInt(args[0]);
		} catch (NumberFormatException nfe){
			oLogCfg.error("Error: not an integer");
			System.exit(0);
		}
		oLogCfg.info("Running program with n="+n);

		if (n>10){
			oLogCfg.warn("Parameter limited to 10");
			n = 10;
		}

		oLog.debug("calling function");
		long lStart = System.currentTimeMillis();
		int erg = getSum(n);
		long lEnd = System.currentTimeMillis();
		oLog.debug("function call finished successfully");
		oLog.info("Result for "+n+" is "+erg);
		oLogGen.info("Calculation took "+(lEnd-lStart)+" ms");
		oLogFileOK.info("Result for "+n+" is "+erg);

		oLogGen.debug("Stopping program");
	}

	private static int getSum(int piMax){
		Logger oLogAlg = Logger.getLogger("root.algorithmus");
		oLogAlg.debug("Entering function with param "+piMax);
		int erg = 0;
		for (int i=0; i<piMax; i++){
			oLogAlg.debug("Loop with i="+i+", erg is "+erg);
			erg += i;
		}
		oLogAlg.debug("Returning from function");
		return erg;
	}
}

