Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

log4net usage

Posted on 2008-10-17
5
Medium Priority
?
578 Views
Last Modified: 2013-12-17
Hi;
I want to use log4net in order to determine the duration of the time of run of a method inside my project.
I have already the code to trace the import of data from a dataset within the class valueaggregator.
My question is how to trace the  method private void exportRunOffSCR within the class Output, that I have instanciated "Ouput outputs = new Output(...) within th class valueaggragator?
Here is my actual working 2 classes "valueaggegator and Output attached.
Thanks
/////////////////////////// CLASS ValueAggregator //////////////////////
 
 
 
using System;
using System.Collections;
using System.IO;
using log4net;
using log4net.Appender;
using log4net.Config;
using log4net.Layout;
using PCModelReporter.Properties;
 
namespace PCModelReporter
{
    internal class ValueAggregator
    {
        private static readonly ILog log = LogManager.GetLogger(typeof (ValueAggregator));
 
        private readonly ArrayList companies;
 
        private readonly String outputDirectoryPath;
        private readonly ArrayList resultSetItems;
 
        public ValueAggregator(ArrayList resultSetItems, String outputDirectoryPath)
        {
            this.resultSetItems = resultSetItems;
            this.outputDirectoryPath = outputDirectoryPath;
            companies = new ArrayList();
        }
 
        public void DoWork()
        {
            try
            {
                PatternLayout layout = new PatternLayout("%date [%level] %logger - %message%newline");
 
                
                FileAppender file = new FileAppender();
                file.Layout = layout;
                file.File = outputDirectoryPath + "\\P&C Model Reporter.log";
                file.AppendToFile = true;
                file.ActivateOptions();
 
                BasicConfigurator.Configure(file);
 
                log.Info("*** Starting ***");
 
                IEnumerator enumResultSetItem = resultSetItems.GetEnumerator();
 
                Hashtable inputList = new Hashtable();
                ResultSetItem resultSetItem;
                Inputs inputs;
 
                int i = 0;
                int nbSubLob = 0;
 
                while (enumResultSetItem.MoveNext())
                {
                    i++;
 
                    resultSetItem = (ResultSetItem) enumResultSetItem.Current;
                    GUIHelper.getInstance().setStatus(i/resultSetItems.Count*100,
                                                      "Excel Input file import : " +
                                                      ((ResultSetItem) enumResultSetItem.Current).companyName);
                    inputs = new Inputs(resultSetItem.inputFile);
                    nbSubLob += inputs.getNbSubLob();
                    inputList.Add(resultSetItem.companyName, inputs);
                }
 
                GUIHelper.init(nbSubLob*2);
 
                GUIHelper.getInstance().setStatus(GUIHelper.percentageInput,
                                                  "Data base results import and aggregation ...");
 
                enumResultSetItem = resultSetItems.GetEnumerator();
                while (enumResultSetItem.MoveNext())
                {
                    resultSetItem = (ResultSetItem) enumResultSetItem.Current;
 
                    GUIHelper.getInstance().setCurrentCompany(resultSetItem.companyName);
 
                    RemetricaHelper.getInstance().setIsDB(resultSetItem.isDB);
 
                    if (resultSetItem.isDB)
                    {
                        RemetricaHelper.getInstance().open(resultSetItem.dbConnection.getConnectionString());
                    }
                    else
                    {
                        RemetricaHelper.getInstance().open(resultSetItem.studyFile);
                    }
                    
                    Constants.resultSetRNWKey = resultSetItem.idResultSetRNW;
 
                    inputs = (Inputs)inputList[resultSetItem.companyName];
                    
                    Constants.percentile = inputs.getValueAtRisk();
 
                    if (inputs.validate())
                    {
                        Company company = new Company(resultSetItem.idResultSetNB, resultSetItem.idResultSetRNW, inputs);
 
                        if (company.validate())
                        {
                            GUIHelper.getInstance().incrementOther("STEC ex post Simulation ...");
 
                         
 
                            GUIHelper.getInstance().incrementOther("Excel output file export ...");
 
                            String outputFilePath = outputDirectoryPath + "\\" + resultSetItem.companyName + "-" +
                                                    DateTime.Now.Year + "-" + DateTime.Now.Month + "-" +
                                                    DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" +
                                                    DateTime.Now.Minute + ".xls";
 
                            File.WriteAllBytes(outputFilePath, Resources.outputs);
 
                            Output outputs = new Output(outputFilePath, company.getResultSetNB(),
                                                        company.getResultSetRNW());
 
                            companies.Add(company);
                        }
 
 
                        else
                        {
                            log.Error("SubLob names are not correclty written in the input file : " +
                                      resultSetItem.inputFile);
                        }
 
                        RemetricaHelper.getInstance().close();
                    }
                    else
                    {
                        log.Error("Input File : " + resultSetItem.inputFile + " is not valid !");
                    }
                }
 
                GUIHelper.getInstance().setStatus(0, "Aggregation successfull !");
 
                GUIHelper.getInstance().setCurrentCompany("");
            }
 
 
            catch (Exception e)
            {
                log.Error("Error during Aggregation", e);
            }
 
         
            log.Info("*** End ***");
        }
    }
}
 
 
 
 
 
 
/////////////////////////// CLASS OUTPUT ////////////////////////////
 
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Application=Microsoft.Office.Interop.Excel.Application;
 
namespace PCModelReporter
{
    internal class Output
    {
        private readonly ResultSet resultSetNB;
 
        private readonly ResultSet resultSetRNW;
 
        private readonly ValueXLOutputHelper xlHelper;
 
 
        public Output(String filePath, ResultSet resultSetNB, ResultSet resultSetRNW)
        {
            xlHelper = ValueXLOutputHelper.getInstance();
 
            this.resultSetNB = resultSetNB;
            this.resultSetRNW = resultSetRNW;
            Application xlApp = new Application();
            xlApp.Visible = false;
 
            Workbook inputs = (xlApp.Workbooks.Open(resultSetNB.getInputs().getFilePath(),
                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                    Type.Missing, Type.Missing));
 
            Workbook workbook = (xlApp.Workbooks.Open(filePath,
                                                      Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                      Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                      Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                      Type.Missing, Type.Missing));
 
            Sheets sheets = workbook.Sheets;
 
            Sheets renewalsSheet = inputs.Sheets;
 
            ((Worksheet) renewalsSheet[1]).Copy(sheets[1], Type.Missing);
 
            inputs.Close(false, Type.Missing, Type.Missing);
 
 
            Worksheet sheet = (Worksheet)sheets.get_Item("SCR Run-Off");
 
            exportRunOffSCR(sheet);
 
         
            workbook.Save();
 
            workbook.Close(false, Type.Missing, Type.Missing);
            Marshal.ReleaseComObject(sheets);
            sheets = null;
            Marshal.ReleaseComObject(sheet);
            sheet = null;
            Marshal.ReleaseComObject(workbook);
            workbook = null;
            xlApp.Quit();
            Marshal.ReleaseComObject(xlApp);
            xlApp = null;
        }
 
 
 
 
 
 
        private void exportRunOffSCR(Worksheet sheet)
        {
         
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRUndiscountedReserves,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalUndiscountedReserves());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiscountedReserves,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalDiscountedReserves());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiversifiedSCR,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalDiversifiedSCR());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRRiskOperationalCharge,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalRiskOperationalCharge());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiversifiedSCRwithRO,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalDiversifiedSCRWithRO());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRGrossDiversifiedMVM,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalGrossDiversifiedMVM());
            xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRTaxCostOfHoldingCapital,
                                    ValueXLOutputHelper.columnSCRFirstDY - 2,
                                    resultSetNB.getPastReservesTotalTaxCostOfHoldingCapital());
 
            IEnumerator lobEnum = resultSetNB.getLobList().GetEnumerator();
            String stringLOB = null;
 
            int idSubLob = 0;
 
            while (lobEnum.MoveNext())
            {
                IEnumerator subLobEnum = ((LOB)lobEnum.Current).getSubLobList().GetEnumerator();
 
                while (subLobEnum.MoveNext())
                {
                    if (idSubLob > 0)
                    {
                        ValueXLOutputHelper.getInstance().copyTemplateSCRRow(sheet, idSubLob);
                    }
 
                    exportSubLOBRunOffSCR(sheet, idSubLob, (SubLob)subLobEnum.Current);
                    idSubLob++;
                }
 
                exportLOBRunOffSCR(sheet, (LOB)lobEnum.Current);
                stringLOB += ((LOB)lobEnum.Current).getSourceName() + ";";
            }
 
            double[] undiscountedReserves = resultSetNB.getPastReservesUndiscountedReserves();
            double[] discountedReserves = resultSetNB.getPastReservesDiscountedReserves();
            double[] diversifiedSCR = resultSetNB.getPastReservesDiversifiedSCR();
            double[] riskOperationalCharge = resultSetNB.getPastReservesRiskOperationalCharge();
            double[] diversifiedSCRWithRO = resultSetNB.getPastReservesDiversifiedSCRWithRO();
            double[] grossDiversifiedMVM = resultSetNB.getPastReservesGrossDiversifiedMVM();
            double[] taxCostOfHoldingCapital = resultSetNB.getPastReservesTaxCostOfHoldingCapital();
 
           
            for (int i = 0; i < diversifiedSCR.Length; i++)
            {
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRUndiscountedReserves,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, undiscountedReserves[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiscountedReserves,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, discountedReserves[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiversifiedSCR,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, diversifiedSCR[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRRiskOperationalCharge,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, riskOperationalCharge[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRDiversifiedSCRwithRO,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, diversifiedSCRWithRO[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRGrossDiversifiedMVM,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, grossDiversifiedMVM[i]);
                xlHelper.setDoubleValue(sheet, ValueXLOutputHelper.rowSCRTaxCostOfHoldingCapital,
                                        ValueXLOutputHelper.columnSCRFirstDY + i, taxCostOfHoldingCapital[i]);
            }
        }
}

Open in new window

0
Comment
Question by:SirTey
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
5 Comments
 
LVL 37

Accepted Solution

by:
gregoryyoung earned 500 total points
ID: 22742074
why are you using a FileAppender directly? You could just use a named ILog etc in order to do this, it will work but you have hard coded your config information.

As for you original question... just pass it an ILog then have it call the log methods?

Cheers,

Greg
0
 

Author Comment

by:SirTey
ID: 22742514
Hi;  fileappender is used  to store the data within a txt file.
So is this the solution to my problem?:
 adding to Output:

using log4net;
using log4net.Appender;
using log4net.Layout;

 private static readonly ILog log = LogManager.GetLogger(typeof (Output));

log.Info("*** Start of Run Off ***");
private void runoff(){}
log.Info("*** End of Run Off ***");
0
 

Author Comment

by:SirTey
ID: 22742704
I'm thinking to put an event indicating the start of a the method runoffscr in output and and an eventhandler in value aggregator.
0

Featured Post

NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question