Skip to content

Instantly share code, notes, and snippets.

@cprima
Created December 6, 2024 21:57
Show Gist options
  • Save cprima/331821037979ae9777d67045eaf288e2 to your computer and use it in GitHub Desktop.
Save cprima/331821037979ae9777d67045eaf288e2 to your computer and use it in GitHub Desktop.
embed test

To access the log messages and their associated log levels in a For Each loop for a List(Of Tuple(Of String, UiPath.Core.Activities.LogLevel)), follow these steps:


Accessing Log Message and Log Level in a For Each Loop

  1. TypeArgument:

    • Set the TypeArgument of the For Each activity to Tuple(Of String, UiPath.Core.Activities.LogLevel).
  2. Iteration:

    • Use item.Item1 to access the Log Message (the first element of the tuple).
    • Use item.Item2 to access the Log Level (the second element of the tuple).

Example UiPath Workflow

  1. Input:

    • Assume out_LogMessages is of type List(Of Tuple(Of String, UiPath.Core.Activities.LogLevel)).
  2. For Each Activity:

    • Values: out_LogMessages
    • TypeArgument: Tuple(Of String, UiPath.Core.Activities.LogLevel)
  3. Inside the Loop:

    • Use item.Item1 for the Log Message.
    • Use item.Item2 for the Log Level.

Example Pseudocode in UiPath:

  1. Add a For Each activity:

    • Set Values to out_LogMessages.
    • Set TypeArgument to Tuple(Of String, UiPath.Core.Activities.LogLevel).
  2. Inside the For Each loop:

    • Add a WriteLine activity to display the log message and level:
      Log Message: item.Item1
      Log Level: item.Item2.ToString()
      

Console Output Example:

For a list like this:

(New Tuple(Of String, UiPath.Core.Activities.LogLevel)("Starting file deletion process.", UiPath.Core.Activities.LogLevel.Info))
(New Tuple(Of String, UiPath.Core.Activities.LogLevel)("Deleted file: C:\Temp\example1.txt", UiPath.Core.Activities.LogLevel.Info))
(New Tuple(Of String, UiPath.Core.Activities.LogLevel)("Error deleting file: C:\Temp\example2.txt. Exception: Access denied.", UiPath.Core.Activities.LogLevel.Error))

The output would be:

Log Message: Starting file deletion process.
Log Level: Info

Log Message: Deleted file: C:\Temp\example1.txt
Log Level: Info

Log Message: Error deleting file: C:\Temp\example2.txt. Exception: Access denied.
Log Level: Error

Summary:

  • Use item.Item1 for the log message.
  • Use item.Item2 for the log level.
  • This approach ensures a clean and structured way to process logs in UiPath using For Each.
Try
' Initialize output variables
out_Status = "Success"
out_ErrorMessage = String.Empty
out_LogMessages = New List(Of Tuple(Of String, UiPath.Core.Activities.LogLevel))()
' Log start of file deletion process
Dim startMessage As String = "Starting file deletion process."
Console.WriteLine(startMessage)
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(startMessage, UiPath.Core.Activities.LogLevel.Info))
' Perform file deletion
Dim files As String() = System.IO.Directory.GetFiles(in_Folder)
Dim deletedFilesCount As Integer = 0
For Each file As String In files
Try
' Check if the file matches the extension (if specified)
If in_Extension Is Nothing OrElse System.IO.Path.GetExtension(file).Equals(in_Extension, StringComparison.OrdinalIgnoreCase) Then
System.IO.File.Delete(file)
Dim successMessage As String = $"Deleted file: {file}"
Console.WriteLine(successMessage)
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(successMessage, UiPath.Core.Activities.LogLevel.Info))
deletedFilesCount += 1
End If
Catch fileEx As Exception
' Log error for individual file
Dim errorMessage As String = $"Error deleting file: {file}. Exception: {fileEx.Message}"
Console.WriteLine(errorMessage)
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(errorMessage, UiPath.Core.Activities.LogLevel.Error))
End Try
Next
' Log completion status
Dim completionMessage As String = $"Total files deleted: {deletedFilesCount}"
Console.WriteLine(completionMessage)
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(completionMessage, UiPath.Core.Activities.LogLevel.Info))
Catch ex As Exception
' Log any overarching exception
Dim errorMsg As String = $"Exception occurred during file deletion: {ex.Message}"
Dim stackTraceMsg As String = $"Stack Trace: {ex.StackTrace}"
Console.WriteLine(errorMsg)
Console.WriteLine(stackTraceMsg)
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(errorMsg, UiPath.Core.Activities.LogLevel.Error))
out_LogMessages.Add(New Tuple(Of String, UiPath.Core.Activities.LogLevel)(stackTraceMsg, UiPath.Core.Activities.LogLevel.Error))
' Set error status
out_Status = "Error"
out_ErrorMessage = ex.Message
Throw
End Try
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment