我用 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/

10-15 03:03