Esempio n. 1
0
        /// <summary>
        /// Runs when the activity is run by the workflow.
        /// </summary>
        /// <param name="context">The run state.</param>
        /// <param name="inputs">The inputs.</param>
        void IRunNowActivity.OnRunNow(IRunState context, ActivityInputs inputs)
        {
            var text           = GetArgumentValue <string>(inputs, "inLogActivityMessage");
            var refencedObject = GetArgumentEntity <UserResource>(inputs, "inLogActivityObject");

            IEntity logEntry;

            if (refencedObject != null)
            {
                logEntry = new LogActivityResourceLogEntry
                {
                    ObjectReferencedInLog = refencedObject,
                    ReferencedObjectName  = refencedObject.Name
                };
            }
            else
            {
                logEntry = new LogActivityLogEntry();
            }

            logEntry.SetField(WorkflowRunLogEntry.Name_Field, ActivityInstance.Name);
            logEntry.SetField(WorkflowRunLogEntry.Description_Field, text);

            context.Log(logEntry);

            // Provide some context information to the log message
            EventLog.Application.WriteInformation(string.Format("Log | {1} | Message: {2}", DateTime.UtcNow.Ticks, context.GetSafeWorkflowDescription(), text));
        }
        /// <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. 3
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. 4
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());
        }