Simple and reliable utility to for process orchestration management and time execution measuring - NOW IN .NET CORE! Standalone application written in WPF can host multiple processes and display selected console output in centralized window console. Allows log data filtering based on Error or Success substrings inside the log message.
This approach helps you to keep a track of the latest output data coming from console applications, navigate into Error messages by applying filters or copy and paste selected records from the output window container for further context investigation.
Standalone application gets build into one executable file for easy to install and peace of mind purposes, so that all dependent references are on the place during run time.
Also supports consuming messages send via RabbitMQ exchange. For more details how to configure pipeline, navigate into RabbitMQ section below.
Utility listens to Win events for process Start/Stop and for this reason, it needs to have Administrator rights granted before start.
- Build the solution
- Run the Ariane executable file for first time and after it opens up, close it
- Configuration.JSON file at application root path will be generated
- Open the file and configure your processes
- Start Ariane
[
{
"DisplayName": "Process #1",
"ProcessFileName": "TestingConsole.exe",
"Arguments": null,
"RootPath": "C:\\Users\\marti\\source\\GitHub\\Ariane\\output\\Debug",
"LoggingSourceType": "Console",
"RabbitMQTopicName": null,
"MeasureSettings": [
{
"Name": "1",
"StartCode": "Start",
"StopCode": "Stop",
"IsActive": true,
"ThresholdMaxTimeInSec": 1,
"UseContainsEvaluation": false,
"UseKeyLockedMatch": false
}
]
},
{
"DisplayName": "Process #2",
"ProcessFileName": "TestingConsole.exe",
"Arguments": null,
"RootPath": "C:\\Users\\marti\\source\\GitHub\\Ariane\\output\\Debug",
"LoggingSourceType": "Console",
"RabbitMQTopicName": null,
"MeasureSettings": [
{
"Name": "1",
"StartCode": "Start",
"StopCode": "Stop",
"IsActive": true,
"ThresholdMaxTimeInSec": 15,
"UseContainsEvaluation": false,
"UseKeyLockedMatch": false
}
]
}
]
In very long running use cases and beside the fact that output messages are stored in memory only, application will keep 1100 console messages per process and will delete the oldest 100 every time number exceeds.
- Install RabbitMQ if not installed already RabbitMQ for Windows
- Build NLog.RabbitMQ.Appender from the solution
- Install NLog.RabbitMQ.Appender.dll appender from the output to application which will broadcast log messages. If using nLog use this getting started quick quid how to add the appender to your application:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<extensions>
<add assembly="NLog.RabbitMQ.Appender"/>
</extensions>
<targets>
<target name="rabbit" xsi:type="RabbitMQ" />
</targets>
<rules>
<logger name="*" levels="Debug,Info" writeTo="rabbit" />
</rules>
</nlog>
- Add RabbitMQConnection to appSettings of app.config file as in example below
<appSettings>
<add key="RabbitMQConnection" value="host=localhost;port=5672;virtualHost=/;username=admin;password=admin;requestedHeartbeat=0"/>
</appSettings>
- Change LoggingSourceType to RabbitMQ and what RabbitMQTopicName topic routing key you want to use as in example below
[
{
"DisplayName": "Process #1",
"ProcessFileName": "TestingConsole.exe",
"Arguments": null,
"RootPath": "C:\\Users\\marti\\source\\GitHub\\Ariane\\output\\Debug",
"LoggingSourceType": "RabbitMQ",
"RabbitMQTopicName": "Ariane",
"MeasureSettings": [
{
"Name": "1",
"StartCode": "Start",
"StopCode": "Stop",
"IsActive": true,
"ThresholdMaxTimeInSec": 1,
"UseContainsEvaluation": false,
"UseKeyLockedMatch": false
}
]
}
]
- Save file and start Ariane
- Click Connect button once your monitored application is running beside RabbitMQ Hub service For more information how to use it, navigate into NLog.RabbitMQ.Appender.Test project within the solution
Please submit pull requests that are based on the develop branch. Sample work Your pull request will take "yourWork" branch in your repo and merge into our develop branch. Where possible, pull requests should include unit tests that cover as many uses cases as possible (not always relevant).
Code conventions are based on ReSharper - if you don't have it, follow ones at VS.
Tell me how you like it by giving me a feedback on my Web site. Enjoy the application!
- Stanik Martin - Initial work - Stenly311