public void ActivateOptionsTestLogFolderSet() { string tempPath = Path.Combine(System.IO.Path.GetTempPath() + "foobar"); if (Directory.Exists(tempPath)) { Directory.Delete(tempPath, true); } LogExceptionToFileFilter filter = new LogExceptionToFileFilter(); filter.ExceptionLogFolder = tempPath; filter.ActivateOptions(); var exception = new ArgumentNullException(); ILoggerRepository logRepository = Substitute.For<ILoggerRepository>(); var evt = new LoggingEvent(typeof(LogExceptionToFileFilterTests), logRepository, "test logger", Level.Debug, "test message", exception); var filterResult = filter.Decide(evt); Assert.AreEqual(FilterDecision.Neutral, filterResult); Assert.IsTrue(evt.Properties.Contains("log4net:syslog-exception-log"), "has an exception log param"); Assert.IsTrue(Directory.Exists(tempPath)); Assert.IsTrue(File.Exists(evt.Properties["log4net:syslog-exception-log"].ToString()), "exception file exists"); Directory.Delete(tempPath, true); }
public static void PrepareLog(string logRoot, string serviceName) { Hierarchy hier = log4net.LogManager.GetRepository() as Hierarchy; string logRootFullName = Path.Combine(logRoot, serviceName, "Starter"); if (null != hier) { RollingFileAppender commonAppender = (RollingFileAppender)hier.GetAppenders().Where(a => a.Name.Equals("CommonAppender")).FirstOrDefault(); if (null != commonAppender) { commonAppender.File = Path.Combine(logRootFullName, "logs.txt"); var filter = new LogExceptionToFileFilter() { ExceptionLogFolder = Path.Combine(logRootFullName, "Exceptions") }; commonAppender.AddFilter(filter); filter.ActivateOptions(); var layout = new SyslogLayout() { StructuredDataPrefix = "CStarterD@" + serviceName }; commonAppender.Layout = layout; layout.ActivateOptions(); commonAppender.ActivateOptions(); } } }
public void ActivateOptionsTestNoLogFolderSet() { LogExceptionToFileFilter filter = new LogExceptionToFileFilter(); Assert.That( () => filter.ActivateOptions(), Throws.Exception .TypeOf<ArgumentNullException>() .With.Property("ParamName").EqualTo("ExceptionLogFolder") ); }
static void PrepareLogger(string domain) { Hierarchy hier = log4net.LogManager.GetRepository() as Hierarchy; string logRootFullName = Path.Combine(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory.TrimEnd(new char[] { '\\' })).FullName, "logs", "CStarterd"); if(null != hier) { RollingFileAppender commonAppender = (RollingFileAppender)hier.GetAppenders().Where(a => a.Name.Equals("CommonAppender")).FirstOrDefault(); if (null != commonAppender) { commonAppender.File = Path.Combine(logRootFullName, "Common", "logs.txt"); var filter = new LogExceptionToFileFilter() { ExceptionLogFolder = Path.Combine(logRootFullName, "Common", "Exceptions") }; commonAppender.AddFilter(filter); filter.ActivateOptions(); var layout = new SyslogLayout() { StructuredDataPrefix = "CStarterD@" + domain }; commonAppender.Layout = layout; layout.ActivateOptions(); commonAppender.ActivateOptions(); } RollingFileAppender starterAppender = (RollingFileAppender)hier.GetAppenders().Where(a => a.Name.Equals("StarterAppender")).FirstOrDefault(); if(null != starterAppender) { starterAppender.File = Path.Combine(logRootFullName, "Starterd", "logs.txt"); var filter = new LogExceptionToFileFilter() { ExceptionLogFolder = Path.Combine(logRootFullName, "Starterd", "Exceptions") }; starterAppender.AddFilter(filter); filter.ActivateOptions(); var layout = new SyslogLayout() { StructuredDataPrefix = "CStarterD@" + domain }; starterAppender.Layout = layout; layout.ActivateOptions(); starterAppender.ActivateOptions(); } } }
static void PrepareAppender(string domain, string minLevel) { string logRootFullName = Path.Combine(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory.TrimEnd(new char[] { '\\' })).FullName, "logs", "CStarterd"); foreach (ILoggerRepository respository in log4net.LogManager.GetAllRepositories()) { Hierarchy hier = (Hierarchy)respository; foreach (var appender in hier.GetAppenders()) { MethodInfo addFilterMethod = appender.GetType().GetMethod("AddFilter", BindingFlags.Public | BindingFlags.Instance); if (null != addFilterMethod) { var filter = new LogExceptionToFileFilter() { ExceptionLogFolder = Path.Combine(logRootFullName, appender.Name, "Exceptions") }; addFilterMethod.Invoke(appender, new object[] { filter }); filter.ActivateOptions(); } PropertyInfo fileProp = appender.GetType().GetProperty("File", BindingFlags.Public | BindingFlags.Instance); if (null != fileProp) { fileProp.SetValue(appender, Path.Combine(logRootFullName, appender.Name, "logs.txt"), null); } PropertyInfo layoutProp = appender.GetType().GetProperty("Layout", BindingFlags.Public | BindingFlags.Instance); if (null != layoutProp) { var layout = new SyslogLayout() { StructuredDataPrefix = "CStarterD@" + domain }; layoutProp.SetValue(appender, layout, null); layout.ActivateOptions(); } MethodInfo activeMethod = appender.GetType().GetMethod("ActivateOptions", BindingFlags.Public | BindingFlags.Instance); if (null != activeMethod) activeMethod.Invoke(appender, null); } PrepareLoggerLevel(respository, domain, minLevel); } PrepareRootLoggerLevel(minLevel); }