コード例 #1
0
        //Get an instance of a logger for a file name
        public static TextFileLogger GetTextFileLogger(string fileName, bool overriteExisting)
        {
            TextFileLogger loggerToReturn = null;

            lock (loggerTable)
            {
                if (loggerTable.ContainsKey(fileName))
                {
                    TextLoggerData data = (TextLoggerData)loggerTable[fileName];
                    data.NumberOfReferences += 1;
                    loggerToReturn           = data.LoggerInstance;
                }
                else
                {
                    TextFileLogger logger = new TextFileLogger();
                    logger.LogFileName = fileName;
                    logger.Init(overriteExisting);

                    TextLoggerData loggerData = new TextLoggerData();
                    loggerData.NumberOfReferences = 1;
                    loggerData.LoggerInstance     = logger;
                    loggerToReturn = logger;

                    loggerTable.Add(fileName, logger);
                }
            }
            return(loggerToReturn);
        }
コード例 #2
0
        //Close the instance of the logger, make sure to call this otherwise we leak an instance
        public static void CloseLogger(string fileName)
        {
            lock (loggerTable)
            {
                if (loggerTable.ContainsKey(fileName))
                {
                    TextLoggerData data = (TextLoggerData)loggerTable[fileName];
                    data.NumberOfReferences -= 1;
                    if (data.NumberOfReferences == 0)
                    {
                        data.LoggerInstance.CloseLog();
                        //remove references
                        data.LoggerInstance = null;
                        data = null;

                        //cleanup the entry form the table
                        loggerTable.Remove(fileName);
                    }
                }
            }
        }