Example #1
0
        public void FilteringTargetWrapperAsyncTest1()
        {
            var myMockCondition = new MyMockCondition(true);
            var myTarget        = new MyAsyncTarget();
            var wrapper         = new FilteringTargetWrapper(myTarget, myMockCondition);

            myTarget.Initialize(null);
            wrapper.Initialize(null);
            var               logEvent        = new LogEventInfo();
            Exception         lastException   = null;
            var               continuationHit = new ManualResetEvent(false);
            AsyncContinuation continuation    =
                ex =>
            {
                lastException = ex;
                continuationHit.Set();
            };

            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));

            continuationHit.WaitOne();
            Assert.Null(lastException);
            Assert.Equal(1, myTarget.WriteCount);
            Assert.Equal(1, myMockCondition.CallCount);

            continuationHit.Reset();
            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));
            continuationHit.WaitOne();
            Assert.Null(lastException);
            Assert.Equal(2, myTarget.WriteCount);
            Assert.Equal(2, myMockCondition.CallCount);
        }
Example #2
0
        /// <summary>
        ///     Creates filtering target wrapper.
        /// </summary>
        /// <param name="name">
        ///     The name.
        /// </param>
        /// <param name="wrappedTarget">
        ///     The wrapped target.
        /// </param>
        /// <param name="condition">
        ///     The condition.
        /// </param>
        /// <returns>
        ///     The new filtering target wrapper.
        /// </returns>
        public static FilteringTargetWrapper CreateFilteringTargetWrapper(
            string name,
            Target wrappedTarget,
            string condition)
        {
            FilteringTargetWrapper = new FilteringTargetWrapper
            {
                Name          = name,
                WrappedTarget = wrappedTarget,
                Condition     = condition
            };

            return(FilteringTargetWrapper);
        }
Example #3
0
    static void Main(string[] args)
    {
        FileTarget wrappedTarget = new FileTarget();

        wrappedTarget.FileName = "${basedir}/file.txt";

        FilteringTargetWrapper filteringTarget = new FilteringTargetWrapper();

        filteringTarget.WrappedTarget = wrappedTarget;

        filteringTarget.Condition = "contains('${message}','1')";

        NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(filteringTarget, LogLevel.Debug);

        Logger logger = LogManager.GetLogger("Example");

        logger.Debug("log message 0");
        logger.Debug("log message 1");
        logger.Debug("log message 2");
        logger.Debug("log message 11");
    }
Example #4
0
        public void FilteringTargetWrapperAsyncWithExceptionTest1()
        {
            var myMockCondition = new MyMockCondition(true);
            var myTarget        = new MyAsyncTarget
            {
                ThrowExceptions = true,
            };

            var wrapper = new FilteringTargetWrapper(myTarget, myMockCondition);

            myTarget.Initialize(null);
            wrapper.Initialize(null);
            var               logEvent        = new LogEventInfo();
            Exception         lastException   = null;
            var               continuationHit = new ManualResetEvent(false);
            AsyncContinuation continuation    =
                ex =>
            {
                lastException = ex;
                continuationHit.Set();
            };

            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));

            continuationHit.WaitOne();
            Assert.IsNotNull(lastException);
            Assert.IsInstanceOfType(lastException, typeof(InvalidOperationException));

            Assert.AreEqual(1, myTarget.WriteCount);
            Assert.AreEqual(1, myMockCondition.CallCount);

            continuationHit.Reset();
            lastException = null;
            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));
            continuationHit.WaitOne();
            Assert.IsNotNull(lastException);
            Assert.IsInstanceOfType(lastException, typeof(InvalidOperationException));
            Assert.AreEqual(2, myTarget.WriteCount);
            Assert.AreEqual(2, myMockCondition.CallCount);
        }
Example #5
0
        public void FilteringTargetWrapperSyncTest2()
        {
            var myMockCondition = new MyMockCondition(false);
            var myTarget        = new MyTarget();
            var wrapper         = new FilteringTargetWrapper
            {
                WrappedTarget = myTarget,
                Condition     = myMockCondition,
            };

            myTarget.Initialize(null);
            wrapper.Initialize(null);
            var               logEvent        = new LogEventInfo();
            Exception         lastException   = null;
            bool              continuationHit = false;
            AsyncContinuation continuation    =
                ex =>
            {
                lastException   = ex;
                continuationHit = true;
            };

            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));

            Assert.Equal(1, myMockCondition.CallCount);

            Assert.True(continuationHit);
            Assert.Null(lastException);
            Assert.Equal(0, myTarget.WriteCount);
            Assert.Equal(1, myMockCondition.CallCount);

            continuationHit = false;
            wrapper.WriteAsyncLogEvent(logEvent.WithContinuation(continuation));
            Assert.True(continuationHit);
            Assert.Null(lastException);
            Assert.Equal(0, myTarget.WriteCount);
            Assert.Equal(2, myMockCondition.CallCount);
        }