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); })); }
/// <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); }
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(); }
//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); } }
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"); }
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]; }
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; }
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); }
/// <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); }
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()); } }
// 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); } } }
/// <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); }
/// <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); }
//变更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); } } } }
/// <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); }
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]; }
// 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); }
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); } }
private void SetLevel(ILog log, string levelName) { log4net.Repository.Hierarchy.Logger logger = (log4net.Repository.Hierarchy.Logger)log.Logger; logger.Level = logger.Hierarchy.LevelMap[levelName]; }
/// <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); }
private void AddAppender(ILog log, IAppender appender) { log4net.Repository.Hierarchy.Logger logger = (log4net.Repository.Hierarchy.Logger)log.Logger; logger.AddAppender(appender); }