Ejemplo n.º 1
0
 public static ILog GetCustomLogger(string loggerName, string category = null, bool additivity = false)
 {
     return(loggerContainer.GetOrAdd(loggerName, delegate(string name)
     {
         RollingFileAppender newAppender = null;
         ReadParamAppender appender = null;
         if (appenderContainer.ContainsKey(loggerName))
         {
             appender = appenderContainer[loggerName];
             newAppender = GetNewFileApender(loggerName, string.IsNullOrEmpty(appender.File) ? GetFile(category, loggerName) : appender.File, appender.MaxSizeRollBackups,
                                             appender.AppendToFile, true, appender.MaximumFileSize, RollingFileAppender.RollingMode.Composite, appender.DatePattern, appender.LayoutPattern);
         }
         else
         {
             newAppender = GetNewFileApender(loggerName, GetFile(category, loggerName), MAX_SIZE_ROLL_BACKUPS, true, true, MAXIMUM_FILE_SIZE, RollingFileAppender.RollingMode.Composite,
                                             DATE_PATTERN, LAYOUT_PATTERN);
         }
         log4net.Repository.Hierarchy.Hierarchy repository = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();
         log4net.Repository.Hierarchy.Logger logger = repository.LoggerFactory.CreateLogger(repository, loggerName);
         logger.Hierarchy = repository;
         logger.Parent = repository.Root;
         logger.Level = GetLoggerLevel(appender == null ? LEVEL : appender.Level);
         logger.Additivity = additivity;
         logger.AddAppender(newAppender);
         logger.Repository.Configured = true;
         return new LogImpl(logger);
     }));
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Warning: this is not tread-safe, so only call this at startup or at a time that you are sure your
        /// process is not performing any logging!
        /// </summary>
        /// <param name="filePath">The path to the log file.</param>
        /// <param name="sourceLevels">The lowest log level to log.</param>
        public static void SetLogFilePath(string filePath, SourceLevels sourceLevels)
        {
            if (!Path.IsPathRooted(filePath))
            {
                filePath = Path.Combine(ArgusTVLogFolder, filePath);
            }

            Level level = Level.Debug;

            if (_sourceLevels == SourceLevels.Information)
            {
                level = Level.Info;
            }
            else if (_sourceLevels == SourceLevels.Warning)
            {
                level = Level.Warn;
            }
            else if (_sourceLevels == SourceLevels.Error)
            {
                level = Level.Error;
            }
            else if (_sourceLevels == SourceLevels.Critical)
            {
                level = Level.Fatal;
            }
            _sourceLevels = sourceLevels;

            log4Hierarchy.Hierarchy hierarchy =
                (log4Hierarchy.Hierarchy)LogManager.GetAllRepositories().FirstOrDefault(r => r.Name == _argusTV);
            if (hierarchy == null)
            {
                hierarchy = (log4Hierarchy.Hierarchy)LogManager.CreateRepository(_argusTV);
            }
            hierarchy.Root.RemoveAllAppenders();

            RollingFileAppender roller        = new RollingFileAppender();
            PatternLayout       patternLayout = new PatternLayout();

            patternLayout.ConversionPattern = "%date [%-5level][%thread]: %message%newline";
            patternLayout.ActivateOptions();
            roller.Layout             = patternLayout;
            roller.AppendToFile       = true;
            roller.RollingStyle       = RollingFileAppender.RollingMode.Size;
            roller.MaxSizeRollBackups = 4;
            roller.MaximumFileSize    = "1000KB";
            roller.StaticLogFileName  = true;
            roller.File = filePath;
            roller.ActivateOptions();
            roller.AddFilter(new log4net.Filter.LevelRangeFilter()
            {
                LevelMin = level,
                LevelMax = Level.Fatal
            });
            log4net.Config.BasicConfigurator.Configure(hierarchy, roller);

            log4Hierarchy.Logger coreLogger = hierarchy.GetLogger(_argusTV) as log4Hierarchy.Logger;
            coreLogger.Level = level;

            _log = LogManager.GetLogger(hierarchy.Name, _argusTV);
        }
Ejemplo n.º 3
0
 public void ShutdownLogger()
 {
     LogManager.Flush(5000);
     log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)LogManager.GetLogger(_repository, _name).Logger;
     l.RemoveAllAppenders();
     LogManager.GetLogger(_repository, _name).Logger.Repository.Shutdown();
 }
Ejemplo n.º 4
0
        //public static void AddAppender(string appenderName, ILogger wLogger)
        //{
        //    log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)wLogger;

        //    log4net.Appender.IAppender hasAppender = l.GetAppender(appenderName);
        //    if (hasAppender != null)
        //    {
        //        hasAppender..ActivateOptions();

        //        l.AddAppender(hasAppender);
        //    }
        //}

        public static void AddAppender(string appenderName, ILogger wLogger)
        {
            string filename = ConfigurationManager.AppSettings["LogDir"].ToString() + "\\" + appenderName + ".log";

            log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)wLogger;

            log4net.Appender.IAppender hasAppender = l.GetAppender(appenderName);
            if (hasAppender == null)
            {
                log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender();

                appender.DatePattern       = "yyyyMMdd";
                appender.RollingStyle      = log4net.Appender.RollingFileAppender.RollingMode.Date;
                appender.AppendToFile      = true;
                appender.File              = filename;
                appender.StaticLogFileName = true;
                appender.Name              = appenderName;

                log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout();
                layout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
                layout.ActivateOptions();

                appender.Layout = layout;
                appender.ActivateOptions();


                l.AddAppender(appender);
            }
        }
Ejemplo n.º 5
0
        internal Logging(string logName, string subFolder = "")
        {
            LogPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Program.CompanyName, "Log");

            if (!string.IsNullOrEmpty(subFolder) && subFolder.Length != 0)
            {
                LogPath = $"{LogPath}\\{subFolder}";
            }

            if (!Directory.Exists(LogPath))
            {
                Directory.CreateDirectory(LogPath);
                Helper.SetDirectoryNetworkServiceAccessControl(LogPath);
            }

            string fullName = Path.Combine(LogPath, $"{logName}.log");

            //log4net.Config.XmlConfigurator.Configure();
            Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;

            hierarchy.Threshold = Level.Debug;

            log4net.Repository.Hierarchy.Logger logger = hierarchy.LoggerFactory.CreateLogger(hierarchy, logName);
            logger.Hierarchy = hierarchy;
            logger.AddAppender(CreateFileAppender(logName, fullName));
            logger.Repository.Configured = true;
            logger.Level = Level.Debug;
            Log          = new LogImpl(logger);
            Log.Info("**********************************************");
            Log.Info($"{logName} logging started");
        }
Ejemplo n.º 6
0
        public static void SetLevel(string loggerName, string levelName)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(loggerName);
            log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger;

            l.Level = l.Hierarchy.LevelMap[levelName];
        }
Ejemplo n.º 7
0
 private static void CreateLogger(FileAppender fileAppender, string loggerName)
 {
     log4net.Repository.Hierarchy.Hierarchy hierarchy = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetLoggerRepository();
     log4net.Repository.Hierarchy.Logger    logger    = (log4net.Repository.Hierarchy.Logger)hierarchy.GetLogger(APPENDER_NAME);
     logger.RemoveAllAppenders();
     logger.AddAppender(fileAppender);
     hierarchy.Configured = true;
 }
Ejemplo n.º 8
0
        internal void ApplyTo(Logger logger)
        {
            if(_level != null)
                logger.Level = _level;

            if(_additivity == false)
                logger.Additivity = false;

            foreach(var appenderConfiguration in _appenderConfigurations)
                appenderConfiguration.ApplyTo(logger);
        }
Ejemplo n.º 9
0
		/// <summary>
		/// Add an appender and see if it can be retrieved.
		/// </summary>
		[Test] public void TestAppender1() 
		{
			log = LogManager.GetLogger("test").Logger as Logger;
			CountingAppender a1 = new CountingAppender();
			a1.Name = "testAppender1";			 
			log.AddAppender(a1);
		
			IEnumerator enumAppenders = ((IEnumerable)log.Appenders).GetEnumerator();
			Assert.IsTrue( enumAppenders.MoveNext() );
			CountingAppender aHat = (CountingAppender) enumAppenders.Current;	
			Assert.AreEqual(a1, aHat);	
		}
Ejemplo n.º 10
0
        private static void SetupLogger()
        {
            try
            {
                if (trinityLog == null)
                {
                    lock (_loglock)
                    {
                        _Logger.Info("Setting up Trinity Logging");
                        int      myPid     = Process.GetCurrentProcess().Id;
                        DateTime startTime = Process.GetCurrentProcess().StartTime;

                        trinityLayout = new PatternLayout("%date{HH:mm:ss.fff} %-5level %logger{1} %m%n");
                        trinityLayout.ActivateOptions();

                        trinityFilter = new log4net.Filter.LoggerMatchFilter();
                        trinityFilter.LoggerToMatch = "Trinity";
                        trinityFilter.AcceptOnMatch = true;
                        trinityFilter.ActivateOptions();

                        Hierarchy h         = (Hierarchy)LogManager.GetRepository();
                        var       appenders = h.GetAppenders();

                        foreach (var appender in appenders)
                        {
                            if (appender is FileAppender)
                            {
                                trinityAppender = appender as FileAppender;
                            }
                        }

                        trinityAppender.Layout = trinityLayout;
                        //trinityAppender.AddFilter(trinityFilter);
                        trinityAppender.LockingModel = new FileAppender.ExclusiveLock();
                        //trinityAppender.LockingModel = new FileAppender.InterProcessLock();

                        trinityAppender.ActivateOptions();

                        trinityLog               = LogManager.GetLogger("TrinityDebug");
                        trinityLogger            = ((log4net.Repository.Hierarchy.Logger)trinityLog.Logger);
                        trinityLogger.Additivity = false;
                        trinityLogger.AddAppender(trinityAppender);
                    }
                }
            }
            catch (Exception ex)
            {
                _Logger.Error("Error setting up Trinity Logger:\n" + ex.ToString());
            }
        }
Ejemplo n.º 11
0
 // Add an appender to a logger
 public static void AddAppender(string loggerName, log4net.Appender.IAppender appender)
 {
     try
     {
         log4net.ILog log = log4net.LogManager.GetLogger(loggerName);
         log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger;
         l.AddAppender(appender);
     }
     catch (Exception er)
     {
         using (StreamWriter sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "\\FatalLogError.log", true))
         {
             sw.WriteLine(er.Message);
         }
     }
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Log4net사용을 위한 설정
        /// </summary>
        /// <param name="logLevel">로그 레벨 설정</param>
        public void SetupLog4net(Level logLevel, string loggerName)
        {
            CheckAndCreateLoggingFolder();

            ILoggerRepository repository = LogManager.CreateRepository(loggerName);
            Hierarchy         hierarchy  = (Hierarchy)repository;

            log4net.Repository.Hierarchy.Logger logger = hierarchy.LoggerFactory.CreateLogger((ILoggerRepository)hierarchy, loggerName);
            logger.Hierarchy = hierarchy;
            CreateFileAppender(loggerName);
            logger.AddAppender(this.roller);
            logger.Repository.Configured = true;

            hierarchy.Threshold = logLevel;
            logger.Level        = logLevel;

            this.log = new LogImpl(logger);
        }
		private Logger GetLoggerFrom(Logger logger, string fullName, string accountName, string profileName)
		{
			var result = new LoggerImpl(fullName)
			             	{
			             		Level = logger.Level,
			             		Additivity = logger.Additivity,
			             	};

			foreach (var appender in logger.Hierarchy.GetAppenders()
				.OfType<PluginRollingFileAppender>()
				.Where(x => x.Name.StartsWith(logger.Name))
				.Select(x => new PluginRollingFileAppender(x, _path, _locker, accountName, profileName)))
			{
				appender.ActivateOptions();
				result.AddAppender(appender);
			}

			return result;
		}
        /// <summary>
        /// Obtiene el appender de Log4Net que está definido en su configuración.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 02/03/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <returns></returns>
        public static IAppender ObtenerAppender()
        {
            Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;

            if (hierarchy != null)
            {
                log4net.Repository.Hierarchy.Logger logger = hierarchy.Root;
                if (logger != null)
                {
                    IAppender[]       appenders     = logger.Repository.GetAppenders();
                    IList <IAppender> appendersList = appenders.Where(c => c.GetType() == typeof(FileAppender) || c.GetType() == typeof(RollingFileAppender)).ToList();

                    if (appendersList.Count > 0)
                    {
                        return(appendersList.Single());
                    }
                }
            }
            return(null);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Log4net사용을 위한 설정
        /// </summary>
        /// <param name="logLevel">로그 레벨 설정</param>
        public void SetupLog4net(Level logLevel, string loggerName)
        {
            CheckAndCreateLoggingFolder();
            //로그파일이 없을때만 생성하도록 변경해야 함 (ihlee)
            bool exists = false;
            ILoggerRepository repository = null;

            log4net.Repository.ILoggerRepository[] repositories = LogManager.GetAllRepositories();
            if (repositories != null)
            {
                foreach (log4net.Repository.ILoggerRepository r in repositories)
                {
                    if (r.Name == loggerName)
                    {
                        repository = r;
                        exists     = true;
                        break;
                    }
                }
            }
            if (!exists)
            {
                repository = LogManager.CreateRepository(loggerName);
            }

            Hierarchy hierarchy = (Hierarchy)repository;

            log4net.Repository.Hierarchy.Logger logger = hierarchy.LoggerFactory.CreateLogger((ILoggerRepository)hierarchy, loggerName);
            logger.Hierarchy = hierarchy;
            CreateFileAppender(loggerName);
            logger.AddAppender(this.roller);
            logger.Repository.Configured = true;

            hierarchy.Threshold = logLevel;
            logger.Level        = logLevel;

            this.log = new LogImpl(logger);
        }
Ejemplo n.º 16
0
    //变更log的路径和文件名称
    public void ChangeLog4netLogFileName(string fileName)
    {
        log4net.Core.LogImpl logImpl = this.logger as log4net.Core.LogImpl;
        if (logImpl != null)
        {
            log4net.Repository.Hierarchy.Logger temp = (log4net.Repository.Hierarchy.Logger)logImpl.Logger;

            log4net.Appender.AppenderCollection ac = ((log4net.Repository.Hierarchy.Logger)logImpl.Logger).Appenders;
            for (int i = 0; i < ac.Count; i++)
            {     // 这里我只对RollingFileAppender类型做修改
                log4net.Appender.RollingFileAppender rfa = ac[i] as log4net.Appender.RollingFileAppender;
                if (rfa != null)
                {
                    rfa.File = fileName;
                    if (!System.IO.File.Exists(fileName))
                    {
                        System.IO.File.Create(fileName);
                    }
                    // 更新Writer属性
                    rfa.Writer = new System.IO.StreamWriter(rfa.File, rfa.AppendToFile, rfa.Encoding);
                }
            }
        }
    }
Ejemplo n.º 17
0
 /// <summary>
 /// Create a new provision node with child node
 /// </summary>
 /// <param name="log">A child logger to add to this node.</param>
 /// <remarks>
 /// <para>
 /// Initializes a new instance of the <see cref="ProvisionNode" /> class 
 /// with the specified child logger.
 /// </para>
 /// </remarks>
 internal ProvisionNode(Logger log)
 {
     Add(log);
 }
Ejemplo n.º 18
0
 static void PrepareRootLoggerLevel(string level)
 {
     log4net.Repository.Hierarchy.Hierarchy h          = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
     log4net.Repository.Hierarchy.Logger    rootLogger = h.Root;
     rootLogger.Level = h.LevelMap[level];
 }
Ejemplo n.º 19
0
 // Add an appender to a logger
 public static void AddAppender(string loggerName, log4net.Appender.IAppender appender)
 {
     log4net.ILog log = log4net.LogManager.GetLogger(loggerName);
     log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger;
     l.AddAppender(appender);
 }
Ejemplo n.º 20
0
        public SyncServiceLogAppender(string fileLocation, long storeLocationID)
        {
            log4net.Repository.Hierarchy.Hierarchy repository = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();



            if (fileLocation != "")
            {
                LoggerSimple.WriteMessage("Creating logger...." + fileLocation);

                var appenders = repository.GetAppenders();

                if (appenders.FirstOrDefault(i => i.Name == "ASyncServiceLogAppender-" + storeLocationID) != null)
                {
                    return;
                }


                SyncServiceFileAppender originalAppender = appenders.FirstOrDefault(i => i.Name == "SyncServiceLogAppender-0") as SyncServiceFileAppender;
                //(appenders[0] as SyncServiceFileAppender);


                SyncServiceFileAppender fileAppender = new SyncServiceFileAppender();

                fileAppender.Name               = "ASyncServiceLogAppender-" + storeLocationID;
                fileAppender.File               = fileLocation;
                fileAppender.AppendToFile       = true;
                fileAppender.MaxSizeRollBackups = originalAppender.MaxSizeRollBackups;
                fileAppender.MaximumFileSize    = originalAppender.MaximumFileSize;
                fileAppender.RollingStyle       = originalAppender.RollingStyle;
                fileAppender.MaximumFileSize    = originalAppender.MaximumFileSize;
                fileAppender.CountDirection     = originalAppender.CountDirection;
                fileAppender.DatePattern        = originalAppender.DatePattern;
                fileAppender.ImmediateFlush     = originalAppender.ImmediateFlush;
                fileAppender.MaxFileSize        = originalAppender.MaxFileSize;


                fileAppender.StaticLogFileName = false;

                fileAppender.Threshold = log4net.Core.Level.All;

                fileAppender.Layout = originalAppender.Layout;

                fileAppender.LockingModel = new FileAppender.MinimalLock();

                fileAppender.ActivateOptions();

                fileAppender.FilePath = fileLocation;

                log4net.Repository.Hierarchy.Logger logger = (log4net.Repository.Hierarchy.Logger)repository.GetLogger("ASyncServiceLogAppender-" + storeLocationID);
                logger.AddAppender(fileAppender);

                LoggerSimple.WriteMessage("Logger Created..." + storeLocationID);

                Writer = LogManager.GetLogger("ASyncServiceLogAppender-" + storeLocationID);
            }
            else
            {
                Writer = LogManager.GetLogger("SyncServiceLogAppender-" + storeLocationID);
            }
        }
Ejemplo n.º 21
0
        private static void SetupLogger()
        {
            try
            {
                if (trinityLog == null)
                {
                    lock (_loglock)
                    {
                        _Logger.Info("Setting up Trinity Logging");
                        int myPid = Process.GetCurrentProcess().Id;
                        DateTime startTime = Process.GetCurrentProcess().StartTime;

                        trinityLayout = new PatternLayout("%date{HH:mm:ss.fff} %-5level %logger{1} %m%n");
                        trinityLayout.ActivateOptions();

                        trinityFilter = new log4net.Filter.LoggerMatchFilter();
                        trinityFilter.LoggerToMatch = "Trinity";
                        trinityFilter.AcceptOnMatch = true;
                        trinityFilter.ActivateOptions();

                        Hierarchy h = (Hierarchy)LogManager.GetRepository();
                        var appenders = h.GetAppenders();

                        foreach (var appender in appenders)
                        {
                            if (appender is FileAppender)
                            {
                                trinityAppender = appender as FileAppender;
                            }
                        }

                        trinityAppender.Layout = trinityLayout;
                        //trinityAppender.AddFilter(trinityFilter);
                        trinityAppender.LockingModel = new FileAppender.ExclusiveLock();
                        //trinityAppender.LockingModel = new FileAppender.InterProcessLock();

                        trinityAppender.ActivateOptions();

                        trinityLog = LogManager.GetLogger("TrinityDebug");
                        trinityLogger = ((log4net.Repository.Hierarchy.Logger)trinityLog.Logger);
                        trinityLogger.Additivity = false;
                        trinityLogger.AddAppender(trinityAppender);
                    }
                }
            }
            catch (Exception ex)
            {
                _Logger.Error("Error setting up Trinity Logger:\n" + ex.ToString());
            }
        }
Ejemplo n.º 22
0
 private void SetLevel(ILog log, string levelName)
 {
     log4net.Repository.Hierarchy.Logger logger = (log4net.Repository.Hierarchy.Logger)log.Logger;
     logger.Level = logger.Hierarchy.LevelMap[levelName];
 }
Ejemplo n.º 23
0
		/// <summary>
		/// Add an appender X, Y, remove X and check if Y is the only
		/// remaining appender.
		/// </summary>
		[Test] public void TestAppender2() 
		{
			CountingAppender a1 = new CountingAppender();
			a1.Name = "testAppender2.1";		   
			CountingAppender a2 = new CountingAppender();
			a2.Name = "testAppender2.2";		   
		
			log = LogManager.GetLogger("test").Logger as Logger;
			log.AddAppender(a1);
			log.AddAppender(a2);	

			CountingAppender aHat = (CountingAppender)log.GetAppender(a1.Name);
			Assert.AreEqual(a1, aHat);	

			aHat = (CountingAppender)log.GetAppender(a2.Name);
			Assert.AreEqual(a2, aHat);	

			log.RemoveAppender("testAppender2.1");

			IEnumerator enumAppenders = ((IEnumerable)log.Appenders).GetEnumerator();
			Assert.IsTrue( enumAppenders.MoveNext() );
			aHat = (CountingAppender) enumAppenders.Current;	
			Assert.AreEqual(a2, aHat);	
			Assert.IsTrue(!enumAppenders.MoveNext());

			aHat = (CountingAppender)log.GetAppender(a2.Name);
			Assert.AreEqual(a2, aHat);	
		}
Ejemplo n.º 24
0
 private void AddAppender(ILog log, IAppender appender)
 {
     log4net.Repository.Hierarchy.Logger logger = (log4net.Repository.Hierarchy.Logger)log.Logger;
     logger.AddAppender(appender);
 }