我用 C# 编写了一个程序,它创建了一个日志文件并使用 log4net 填充它。这个程序启动powershell-scripts。脚本也应该使用 log4net。我想监视脚本在运行时记录到 log4net 的内容并将此信息写入我的日志文件中。
你知道我是如何做到这一点的,或者我从哪里获得信息/帮助来解决我的问题?
谢谢
最佳答案
您可以定义一些函数并将它们作为变量传递给您的脚本:
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<string>)Log);
// etc...
然后,您可以像这样从脚本中调用该函数:
$Log.Invoke("test")
编辑 :要添加日志记录级别,您应该执行以下操作
static void Log(LogLevel level,string message) {
// log4net code here...
}
void ExecuteScript() {
// ...
runspace.SessionStateProxy.SetVariable("Log", (Action<LogLevel,string>)Log);
关于c# - 从 powershell-script 记录到 csharp-program (log4net - logfile),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3977247/