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);
        }
示例#2
0
        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")
         );
 }
示例#4
0
        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();
                }
            }
        }
示例#5
0
        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);
        }