/// <summary>
        /// Logs a message to the workflow run.
        /// </summary>
        /// <param name="context">The workflow run context.</param>
        /// <param name="message">The message to log.</param>
        private void LogToRun(IRunState context, string message)
        {
            var activityName = string.Empty;

            var wf = context != null?context.GetSafeWorkflowDescription() : "";

            EventLog.Application.WriteTrace(wf + message);

            if (context == null || context.WorkflowRun == null)
            {
                return;
            }

            if (context.CurrentActivity != null)
            {
                activityName = context.CurrentActivity.Name;
            }

            var logEntry = new LogActivityLogEntry
            {
                Name        = activityName,
                Description = message
            };

            ActivityLogWriter.WriteLogEntry(logEntry.As <TenantLogEntry>());
        }
Esempio n. 2
0
        /// <summary>
        /// Write the message to the activity log.
        /// </summary>
        /// <param name="message">
        /// The message to write. This cannot be null or empty.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="message"/> cannot be null or empty.
        /// </exception>
        internal static void WriteMessageToActivityLog(string message)
        {
            if (string.IsNullOrEmpty(message))
            {
                throw new ArgumentNullException("message");
            }

            LogActivityLogEntry  logActivityLogEntry;
            const int            maxLength = 10000; // Max length of description field
            ICollection <string> messageChunks;

            messageChunks = message.Chunk(maxLength);
            using (new SecurityBypassContext())
            {
                foreach (string messageChunk in messageChunks)
                {
                    logActivityLogEntry = new LogActivityLogEntry
                    {
                        Name                  = "Access Check",
                        Description           = messageChunk,
                        LogEventTime          = DateTime.UtcNow,
                        LogEntrySeverity_Enum = LogSeverityEnum_Enumeration.InformationSeverity
                    };

                    Factory.ActivityLogWriter.WriteLogEntry(logActivityLogEntry.As <TenantLogEntry>());
                }
            }
        }
Esempio n. 3
0
        public void WriteLogEntry_PurgerCalled()
        {
            ActivityLogWriter         activityLogWriter;
            Mock <IActivityLogPurger> activityLogPurgerMock;
            LogActivityLogEntry       logActivityLogEntry;
            Expression <Action <IActivityLogPurger> > purgeCall;

            activityLogPurgerMock = new Mock <IActivityLogPurger>(MockBehavior.Strict);
            purgeCall             = alp => alp.Purge();
            activityLogPurgerMock.Setup(purgeCall);

            logActivityLogEntry = new LogActivityLogEntry();

            activityLogWriter = new ActivityLogWriter(activityLogPurgerMock.Object);
            activityLogWriter.WriteLogEntry(logActivityLogEntry.As <TenantLogEntry>());

            activityLogPurgerMock.Verify(purgeCall, Times.Once());
        }