/// <summary> /// Initializes a new instance of the <see cref="Log4NetFactory"/> class. /// </summary> /// <param name="log4NetConfigurationFile">The log4 net configuration file to load and watch. If not found configures from App.Config.</param> public Log4NetFactory(string log4NetConfigurationFile) { #if NETSTANDARD2_0 if (File.Exists(log4NetConfigurationFile)) { log4net.Config.XmlConfigurator.ConfigureAndWatch(RootRepository, new FileInfo(log4NetConfigurationFile)); } else { log4net.Config.XmlConfigurator.Configure(RootRepository); } #else //Restart logging if necessary log4net.Repository.ILoggerRepository rootRepository = log4net.LogManager.GetRepository(); if (rootRepository != null) { rootRepository.Shutdown(); } if (File.Exists(log4NetConfigurationFile)) { log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(log4NetConfigurationFile)); } else { log4net.Config.XmlConfigurator.Configure(); } #endif }
private static void ChangeRhinoLicensingLogLevelToWarn() { Assembly rhinoLicensingAssembly = Assembly.GetAssembly(typeof(Rhino.Licensing.LicenseValidator)); if (rhinoLicensingAssembly == null) { return; } log4net.Repository.ILoggerRepository rhinoLicensingRepository = log4net.LogManager.GetRepository(rhinoLicensingAssembly); if (rhinoLicensingRepository == null) { return; } var hier = (log4net.Repository.Hierarchy.Hierarchy)rhinoLicensingRepository; var licenseValidatorLogger = hier.GetLogger("Rhino.Licensing.LicenseValidator"); if (licenseValidatorLogger == null) { return; } ((log4net.Repository.Hierarchy.Logger)licenseValidatorLogger).Level = hier.LevelMap["WARN"]; }
public RARController(/*IHttpContextAccessor httpContextAccessor, */ RARContext repositoryContext, IConfiguration configuration, ILogger <RARController> logger, IHostingEnvironment hostingEnvironment) { /*_httpContextAccessor = httpContextAccessor;*/ RepositoryContext = repositoryContext; logger.LogInformation("Controller StoricoCartelleController started!"); _hostingEnvironment = hostingEnvironment; _configuration = configuration; _logger = logger; var executingAssembly = Assembly.GetExecutingAssembly(); log4net.Repository.ILoggerRepository rootRepository = log4net.LogManager.GetRepository(executingAssembly); foreach (var appender in rootRepository.GetAppenders()) { if (appender.Name.Equals("RollingFile") && appender is log4net.Appender.FileAppender) { var fileAppender = appender as log4net.Appender.FileAppender; fileAppender.File = "Log" + "\\rarapi_" + DateTime.Now.ToString("yyyyMMdd") + ".log"; fileAppender.ActivateOptions(); } } }
// <appender name="console" type="log4net.Appender.ColoredConsoleAppender"> // <mapping> // <level value="ERROR" /> // <foreColor value="White" /> // <backColor value="Red, HighIntensity" /> // </mapping> // <mapping> // <level value="WARN" /> // <foreColor value="Yellow, HighIntensity" /> // </mapping> // <mapping> // <level value="INFO" /> // <foreColor value="Green" /> // </mapping> // <layout type="log4net.Layout.PatternLayout"> // <conversionPattern value="%date %newline%message%newline%newline" /> // </layout> // </appender> public static void AddConsoleAppender(this log4net.Repository.ILoggerRepository loggerRepo) { var appender = new log4net.Appender.ColoredConsoleAppender(); appender.Name = "console"; appender.Layout = new log4net.Layout.PatternLayout("%date %newline%message%newline%newline"); var errorMapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); errorMapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; errorMapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Red & log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity; errorMapping.Level = log4net.Core.Level.Error; appender.AddMapping(errorMapping); var warnMapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); warnMapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Yellow & log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity; warnMapping.Level = log4net.Core.Level.Warn; appender.AddMapping(warnMapping); var infoMapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); infoMapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Green; infoMapping.Level = log4net.Core.Level.Info; appender.AddMapping(infoMapping); appender.ActivateOptions(); loggerRepo.AddAppender(appender); }
public static void Main(string[] args) { bool debug = false; foreach (string arg in args) { switch (arg) { case "-d": case "--debug": debug = true; break; case "-h": case "--help": ShowHelp(); Environment.Exit(0); break; /* * // don't block other parameters as we pass them to * // GTK+ / GNOME too * default: * Console.WriteLine("Invalid option: " + arg); * Environment.Exit(1); * break; */ } } #if LOG4NET // initialize log level log4net.Repository.ILoggerRepository repo = log4net.LogManager.GetRepository(); if (debug) { repo.Threshold = log4net.Core.Level.Debug; } else { repo.Threshold = log4net.Core.Level.Info; } #endif try { Frontend.Init(args); } catch (Exception e) { #if LOG4NET _Logger.Fatal(e); #endif // when Gtk# receives an exception it is not usable/relyable anymore! // except the exception was thrown in Frontend.Init() itself if (Frontend.IsGtkInitialized && !Frontend.InGtkApplicationRun) { Frontend.ShowException(e); } // rethrow the exception for console output throw; } }
private LogDynamicHelper() { string logPath = ConfigurationManager.AppSettings["logPath"]; string logFileName = ConfigurationManager.AppSettings["logFileName"]; logPath = logPath.Trim().TrimEnd('\\').TrimEnd('/'); logFileName = logFileName.Trim().TrimEnd('\\').TrimEnd('/'); if (!Directory.Exists(logPath))//如果不存在就创建file文件夹 { Directory.CreateDirectory(logPath); } _logFile = logPath + '\\' + logFileName; //RollingFileAppender _rollingFileAppender = new log4net.Appender.RollingFileAppender(); _rollingFileAppender.AppendToFile = true; _rollingFileAppender.ImmediateFlush = true; _rollingFileAppender.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); _rollingFileAppender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Composite; _rollingFileAppender.MaxSizeRollBackups = 50; _rollingFileAppender.MaximumFileSize = "1MB"; _rollingFileAppender.Encoding = Encoding.UTF8; _repository = log4net.LogManager.CreateRepository("MyRepository"); string patternLayout = null; //patternLayout = "%date [%thread] %-5level% [%l]-[%m]newline%message%newline"; patternLayout = "[%thread]%newline%message%newline"; _layout = new log4net.Layout.PatternLayout(patternLayout); }
private static Action <DateTime, int, string, Exception> Log4NetLogHandlerProvider(string loggerName) { if (_log4netLogRepo == null) { _log4netLogRepo = log4net.LogManager.GetRepository(Assembly.GetEntryAssembly()); log4net.Config.XmlConfigurator.ConfigureAndWatch(_log4netLogRepo, new FileInfo("log4net.config")); } var log4netLogger = _log4netLogRepo.GetLogger(loggerName); return(new Action <DateTime, int, string, Exception>(delegate(DateTime timeStamp, int logLevel, string message, Exception exception) { log4net.Core.LoggingEventData logEventData = new log4net.Core.LoggingEventData(); logEventData.Level = _log4NetLogLevelArray[logLevel]; logEventData.TimeStampUtc = timeStamp.ToUniversalTime(); logEventData.Message = message; if (exception != null) { logEventData.ExceptionString = exception.ToString(); } log4net.Core.LoggingEvent logEvent = new log4net.Core.LoggingEvent(logEventData); log4netLogger.Log(logEvent); })); }
private static void Main(string[] args) { // Setup SystemInteraction var persistentFolder = Path.Combine(Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)), "WoMSadGui"); Directory.CreateDirectory(persistentFolder); SystemInteraction.ReadData = f => File.ReadAllText(Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), f)); SystemInteraction.DataExists = f => File.Exists(Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), f)); SystemInteraction.ReadPersistent = f => File.ReadAllText(Path.Combine(persistentFolder, f)); SystemInteraction.PersistentExists = f => File.Exists(Path.Combine(persistentFolder, f)); SystemInteraction.Persist = (f, c) => File.WriteAllText(Path.Combine(persistentFolder, f), c); log4net.Repository.ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); // Setup the engine and create the main window. Game.Create("IBM.font", Width, Height); // Hook the start event so we can add consoles to the system. Game.OnInitialize = Init; // Hook the update event that happens each frame so we can trap keys and respond. Game.OnUpdate = Update; // Start the game. Game.Instance.Run(); // // Code here will not run until the game window closes. // Game.Instance.Dispose(); }
public static void Main() { log4net.Repository.ILoggerRepository logRepository = log4net.LogManager.GetRepository( System.Reflection.Assembly.GetEntryAssembly()); log4net.Config.XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); DateTime startDT = DateTime.Now; try { F_01_Application_Tests.RunTests(); F_02_MEAPTests.RunTests(); F_03_IF_NDTM_Comms_Tests.RunTests(); F_04_IF_NDTM_CPLTM_Tests.RunTests(); DateTime endDT = DateTime.Now; Console.WriteLine("Passed: all the tests; {0}, {1}", startDT, endDT); } catch { DateTime endDT = DateTime.Now; Console.WriteLine("Running tests error; {0}, {1}", startDT, endDT); throw; } }
private string GenerateCurrentLog4NetRepository() { string result = ""; ///Appender log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender(); appender.AppendToFile = true; appender.File = this.logPath + "\\" + this.logName; appender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Composite; appender.DatePattern = ".dd"; appender.MaxSizeRollBackups = 100; appender.MaximumFileSize = "100MB"; appender.CountDirection = 1; appender.ImmediateFlush = true; appender.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); ///layout //log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout("%message%newline"); log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout("%-5level:%message%newline"); layout.Header = "------ New session ------" + Environment.NewLine; layout.Footer = "------ End session ------" + Environment.NewLine; // appender.Layout = layout; appender.ActivateOptions(); // log4net.Repository.ILoggerRepository repository = log4net.LogManager.CreateRepository(this.logName + "Repository"); log4net.Config.BasicConfigurator.Configure(repository, appender); result = repository.Name; return(result); }
/// <summary> /// 自定义初始化事件 /// </summary> public void UserDefinedStartup() { try { Apliu.Standard.Tools.Logger.WriteLogWeb("开始执行自定义初始化事件"); //加载配置文件 Models.ConfigurationJson.LoadConfig(); //初始化程序跟目录 ApliuCoreWeb.Models.Common.RootDirectory = Apliu.Standard.Tools.Web.ServerInfo.SitePath + @"\"; //启动access_token管理任务 Models.WeChat.WxTokenManager.TokenTaskStart(); //创建自定义菜单 //Models.WeChat.WxDefaultMenu.CreateMenus(); //初始化日志配置 log4net.Repository.ILoggerRepository loggerRepository = LogManager.CreateRepository("NETCoreRepositoryObject"); log4net.Config.XmlConfigurator.Configure(loggerRepository, new FileInfo("Config/log4net.config".ToLinuxOrWinPath())); log4net.ILog log4Net = LogManager.GetLogger(loggerRepository.Name, typeof(Object)); ApliuCoreWeb.Models.Common.Log4Net = log4Net; Apliu.Standard.Tools.Logger.WriteLogWeb("自定义初始化事件执行完成"); } catch (System.Exception ex) { Apliu.Standard.Tools.Logger.WriteLogWeb("自定义初始化事件执行失败,详情:" + ex.Message); } }
ILog ConfigLog4Net() { ///Appender2 log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender(); appender.AppendToFile = true; appender.File = "DatFileWatcher.log"; appender.MaxFileSize = 5 * 1024 * 1024; appender.MaxSizeRollBackups = 2; appender.ImmediateFlush = true; appender.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); appender.Name = "DatFileWatcher"; ///layout log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout("%date [%thread] %-5level - %message%newline"); layout.Header = "------ New session ------" + Environment.NewLine; layout.Footer = "------ End session ------" + Environment.NewLine; appender.Layout = layout; appender.ActivateOptions(); log4net.Repository.ILoggerRepository repository = log4net.LogManager.CreateRepository("DatFileWatcher"); log4net.Config.BasicConfigurator.Configure(repository, appender); ILog logger = log4net.LogManager.GetLogger(repository.Name, "Logger"); return(logger); }
/// <summary> /// 初始化日志仓储 /// </summary> /// <param name="configFileName">log4net配置文件</param> internal static void InitRepository(string configFileName) { if (Repository == null) { Repository = log4net.LogManager.CreateRepository("Log4netRepository"); } log4net.Config.XmlConfigurator.Configure(Log4NetProvider.Repository, new FileInfo(configFileName)); }
/// <summary> /// 初始化日志仓储 /// </summary> /// <param name="configFileName">log4net配置文件</param> internal static void InitRepository(string configFileName) { if (Repository == null) { Repository = log4net.LogManager.CreateRepository("Log4netRepository"); } log4net.Config.XmlConfigurator.Configure(Log4NetProvider.Repository, new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, configFileName))); }
private static void SetupLog4Net() { log4net.Repository.ILoggerRepository repo = log4net.LogManager.GetRepository(Assembly.GetEntryAssembly()); log4net.Config.XmlConfigurator.Configure(repo, new FileInfo("log4net.config")); Logger.SetLogFileName("Main", "excel-parser-main.log"); Logger.SetSecondLogFileName("excel-parser-aux.log"); Logger.SetupForTests("Main", "Second"); }
public static string BuildLog4Net(Log4NetConfiguration configuration = null) { log4net.Layout.SerializedLayout layout = new log4net.Layout.SerializedLayout(); layout.AddDecorator(new log4net.Layout.Decorators.StandardTypesDecorator()); layout.AddDefault(""); layout.AddRemove("message"); layout.AddMember("messageobject"); layout.ActivateOptions(); log4net.Filter.LevelMatchFilter filter = new log4net.Filter.LevelMatchFilter { LevelToMatch = log4net.Core.Level.All }; filter.ActivateOptions(); (string InstanceName, bool Buffered, bool KeepFileOpen, bool Shared) = configuration ?? new Log4NetConfiguration(); log4net.Appender.FileAppender.LockingModelBase LockingModel = new log4net.Appender.FileAppender.MinimalLock(); if (KeepFileOpen) { if (Shared) { LockingModel = new log4net.Appender.FileAppender.InterProcessLock(); } else { LockingModel = new log4net.Appender.FileAppender.ExclusiveLock(); } } bool ImmediateFlush = !Buffered; log4net.Appender.RollingFileAppender rollingFileAppender = new log4net.Appender.RollingFileAppender { File = $@"log4net\{InstanceName.ToLower()}-{DateTime.Now.ToString("yyyyMMddHHmm")}-latest.log", ImmediateFlush = ImmediateFlush, LockingModel = LockingModel, AppendToFile = true, RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Composite, DatePattern = "yyyyMMddhhmm", MaxFileSize = 100_000_000, Name = $"{InstanceName}Appender", Layout = layout }; rollingFileAppender.AddFilter(filter); rollingFileAppender.ActivateOptions(); string Repository = $"{InstanceName}Repository"; log4net.Repository.ILoggerRepository repository = log4net.Core.LoggerManager.CreateRepository(Repository); log4net.Config.BasicConfigurator.Configure(repository, rollingFileAppender); return(Repository); } }
public static void AddMethodAppender(this log4net.Repository.ILoggerRepository loggerRepo) { var appender = new MethodAppender(); appender.Name = "method"; appender.Layout = new log4net.Layout.PatternLayout("%date %newline%message%newline%newline"); loggerRepo.AddAppender(appender); }
public static void Init() { log4net.Repository.ILoggerRepository repository = LogManager.CreateRepository("NetCore"); log4net.Config.XmlConfigurator.ConfigureAndWatch(repository, new FileInfo(Path.Combine(AppContext.BaseDirectory, "Log4Net.config"))); log = LogManager.GetLogger(repository.Name, "FileLog"); log_debug = LogManager.GetLogger(repository.Name, "RollingLog"); Task.Run(new Action(WriteToFile)); Task.Run(new Action(DebugToFile)); }
static dbs() { log4net.Repository.ILoggerRepository repository = log4net.LogManager.CreateRepository("NETCoreRepository"); var fileInfo = new FileInfo("config/log4net.config"); log4net.Config.XmlConfigurator.Configure(repository, fileInfo); log4net.Config.BasicConfigurator.Configure(repository); Log = log4net.LogManager.GetLogger(repository.Name, "NETCorelog4net"); Db = new Snow.Orm.DB("Data Source=localhost;database=snow_shop;user id=root;password=123456;Pooling=true;Max Pool Size=100;Min Pool Size=1;default command timeout=20;characterset=utf8", 0, Log); }
static dbs() { log4net.Repository.ILoggerRepository repository = log4net.LogManager.CreateRepository("NETCoreRepository"); var fileInfo = new FileInfo("config/log4net.config"); log4net.Config.XmlConfigurator.Configure(repository, fileInfo); log4net.Config.BasicConfigurator.Configure(repository); Log = log4net.LogManager.GetLogger(repository.Name, "NETCorelog4net"); Db = new Snow.Orm.DB("Server=localhost;Database=snow_shop;Uid=root;Pwd=123456", 0, Log, true); }
/// <summary> /// Shutdowns the logging Subsystem. /// </summary> public static void Shutdown() { log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(); if (repository != null) { repository.Shutdown(); } LogManager.Shutdown(); }
/// <summary> /// Create the file name and sets the path for CommonLogAppender. default path is bin\debug /// </summary> /// <param name="newFilename"></param> public static void CreateLogFile(string newFilename) { log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(""); var appender = repository.GetAppenders() .First(i => i is log4net.Appender.FileAppender && i.Name.Equals("CommonLogAppender")); var fileAppender = (log4net.Appender.FileAppender)appender; fileAppender.File = newFilename; fileAppender.ActivateOptions(); }
public static void FlushBuffers() { log4net.Repository.ILoggerRepository rep = LogManager.GetRepository(); foreach (log4net.Appender.IAppender appender in rep.GetAppenders()) { var buffered = appender as log4net.Appender.BufferingAppenderSkeleton; if (buffered != null) { buffered.Flush(); } } }
public static void ModifyAppenders <T>(this log4net.Repository.ILoggerRepository repository, Action <T> modify) where T : log4net.Appender.AppenderSkeleton { var appenders = from appender in log4net.LogManager.GetRepository().GetAppenders() where appender is T select appender as T; foreach (var appender in appenders) { modify(appender); appender.ActivateOptions(); } }
public VisualAppender() { log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(); debugLevel = repository.LevelMap["DEBUG"].Value; warningLevel = repository.LevelMap["WARN"].Value; infoLevel = repository.LevelMap["INFO"].Value; errorLevel = repository.LevelMap["ERROR"].Value; fatalLevel = repository.LevelMap["FATAL"].Value; logViewModel = new LogViewModel(); }
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); repository = log4net.LogManager.CreateRepository("NETCoreRepository"); log4net.Config.XmlConfigurator.Configure(repository, new System.IO.FileInfo("Config/log4net.config")); }
public Program() : base ( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ) { // Log Manager log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(); repository.Configured = true; // Console Log Setting ConsoleAppender consoleAppender = new ConsoleAppender(); consoleAppender.Name = "Console"; // Console Log Pattern consoleAppender.Layout = new PatternLayout("%d [%t] %-5p %c - %m%n"); // File Log Pattern Setting RollingFileAppender rollingAppender = new RollingFileAppender(); rollingAppender.Name = "RollingFile"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "-yyyy-MM-dd"; rollingAppender.File = "IOCPServerLog.log"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Date; // File Log Pattern rollingAppender.Layout = new PatternLayout("%d [%t] %-5p %c - %m%n"); Hierarchy hierarchy = (Hierarchy)repository; hierarchy.Root.AddAppender(consoleAppender); hierarchy.Root.AddAppender(rollingAppender); rollingAppender.ActivateOptions(); // Log Level Setting hierarchy.Root.Level = log4net.Core.Level.All; logger = LogManager.GetLogger(this.GetType()); logger.Info("Server Started."); Bind(new IPEndPoint(IPAddress.Any, 10000)); logger.Info("Server Bind (Port - 10000)"); Listen(20); // Queue length - 20 logger.Info("Server Listen Start (Queue length - 20)"); AcceptAsync(new Server(this)); }
/// <summary> /// 记录log4net日志 /// </summary> /// <param name="type"></param> /// <param name="logLevel"></param> /// <param name="message"></param> /// <param name="folderName">The folderName<see cref="string"/></param> private static void RecoredLog4Net(Type type, Level logLevel, string message, string folderName = "") { LoadAppender(folderName); var respName = "NETCoreRepository"; var name = ""; log4net.Repository.ILoggerRepository repository = null; try { repository = log4net.LogManager.GetRepository(respName); if (repository == null) { repository = log4net.LogManager.CreateRepository(respName); } else { repository.Exists(name); } } catch (Exception) { if (repository == null) { repository = log4net.LogManager.CreateRepository(respName); } } XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); var log = log4net.LogManager.GetLogger(respName, type.Name); if (logLevel == Level.Info && !DisableInfoLog) { log.Info(message); } else if (logLevel == Level.Error && !DisableErrorLog) { log.Error(message); } else if (logLevel == Level.Debug && !DisableDebugLog) { log.Debug(message); } else if (logLevel == Level.Warn && !DisableWarnLog) { log.Warn(message); } else if (logLevel == Level.Fatal && !DisableFatalLog) { log.Fatal(message); } }
static LogFactory() { //通过文件来配置 log4net.Repository.ILoggerRepository repository = log4net.LogManager.CreateRepository("NetLogRepository"); var fileInfo = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "Config/log4net.config"); log4net.Config.XmlConfigurator.Configure(repository, fileInfo); log4net.Config.BasicConfigurator.Configure(repository); log4net.ILog log = log4net.LogManager.GetLogger(repository.Name, "NetLogRepository"); }
/// <summary> /// Create the file name and sets the path. default path is bin/debug /// </summary> /// <param name="appenderName"></param> /// <param name="newFilename"></param> public static void CreateLogFile(string appenderName, string newFilename) { log4net.Repository.ILoggerRepository repository = LogManager.GetLoggerRepository(); foreach (log4net.Appender.IAppender appender in repository.GetAppenders()) { if (appender.Name.CompareTo(appenderName) == 0 && appender is log4net.Appender.FileAppender) { log4net.Appender.FileAppender fileAppender = (log4net.Appender.FileAppender)appender; fileAppender.File = System.IO.Path.Combine(fileAppender.File, newFilename); fileAppender.ActivateOptions(); } } }
private void configService_ConfigFileChanged(object sender, ConfigFileChangedEventArgs e) { if (e.ConfigFileType == ConfigFileType.Log) { log4net.Repository.ILoggerRepository oldRepository = this.repository; ICustomLog oldLog4release = this.logger4release; ICustomLog oldLog4demo = this.logger4demo; log4net.Repository.ILoggerRepository newRepository = null; ICustomLog newLog4release = null; ICustomLog newLog4demo = null; lock (syncForRepository) { this.repository = null; this.logger4release = null; this.logger4demo = null; // 输出所有当前未输出日志然后关闭当前日志 try { log4net.Appender.IAppender[] oldAppenders = oldRepository.GetAppenders(); if (oldAppenders != null && oldAppenders.Length > 0) { for (int i = 0; i < oldAppenders.Length; i++) { if (oldAppenders[i] is log4net.Appender.BufferingAppenderSkeleton) { ((log4net.Appender.BufferingAppenderSkeleton)oldAppenders[i]).Flush(); } } } } catch{ } finally { oldRepository.Shutdown(); } // 创建新日志 try { StringBuilder sb = new StringBuilder(); newRepository = CustomLogManager.CreateRepository(Guid.NewGuid().ToString()); log4net.Config.XmlConfigurator.Configure(newRepository, new FileInfo(AppDomain.CurrentDomain.MapPhysicalPath("conf\\log.config"))); newLog4release = CustomLogManager.GetLogger(newRepository, "release"); newLog4demo = CustomLogManager.GetLogger(newRepository, "demo"); FormatConfigurationErrorMessages(sb, newRepository.ConfigurationMessages); if (sb.Length > 0) //出错时 { sb.Insert(0, "在响应日志配置文件变化的过程中发生错误,仍将使用距变化发生时最近一次正确的配置。"); // 输出 errorMessages LogUtil.LogToErrorLog(sb.ToString(), log4net.Core.Level.Error, LogCategory.Configuration, null); // 继续使用现有日志 this.repository = null; this.logger4release = null; this.logger4demo = null; } else// 成功应用新配置时 { // 应用新日志 this.lastSuccessConfig = File.ReadAllText(AppDomain.CurrentDomain.MapPhysicalPath("conf\\log.config")); this.repository = newRepository; this.logger4release = newLog4release; this.logger4demo = newLog4demo; this.lock4loggers.EnterWriteLock(); try { this.loggers.Clear(); } finally { this.lock4loggers.ExitWriteLock(); } } } catch (Exception err) { XMS.Core.Container.LogService.Warn("在响应日志配置文件变化的过程中发生错误,仍将使用距变化发生时最近一次正确的配置。", Logging.LogCategory.Configuration, err); if (newRepository != null) { try { newRepository.Shutdown(); } catch { } } } finally { // 更新未成功,使用上次正确的日志配置重新初始化日志 if (this.repository == null) { if(this.lastSuccessConfig != null) { this.repository = CustomLogManager.CreateRepository(Guid.NewGuid().ToString()); using(MemoryStream stream = new MemoryStream(System.Text.Encoding.Default.GetBytes(this.lastSuccessConfig))) { log4net.Config.XmlConfigurator.Configure(this.repository, stream); } this.logger4release = CustomLogManager.GetLogger(this.repository, "release"); this.logger4demo = CustomLogManager.GetLogger(this.repository, "demo"); } else { this.repository = oldRepository; this.logger4release = oldLog4release; this.logger4demo = oldLog4demo; } } } } } }