Question:
I have written a program with C#, that creates a logfile and fills this by using log4net. This program starts powershell-scripts. The scripts should use log4net, too. I want to monitor what the scripts log to log4net while they are running and write this information in my logfile.
Have you an idea how I do this or where I get information/help to my problem?
thanks
Answer:
You could define some functions and pass them to your script as variables:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
static void Log(string message) { // log4net code here... } void ExecuteScript() { // create the runspace configuration RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); // create the runspace, open it and add variables for the script Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); // pass the Log function as a variable runspace.SessionStateProxy.SetVariable("Log", (Action // etc... |
Then you can invoke the function from the script like this:
1 2 |
$Log.Invoke("test") |
EDIT: to add a logging level, you should do something like
1 2 3 4 5 6 7 8 |
static void Log(LogLevel level,string message) { // log4net code here... } void ExecuteScript() { // ... runspace.SessionStateProxy.SetVariable("Log", (Action |