/// <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>()); }
/// <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>()); } } }
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()); }