log4net usage

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

SirTeyAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

gregoryyoungCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
SirTeyAuthor Commented:
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
SirTeyAuthor Commented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.