在VisualStudio中使用NLog和F#Interactive-需要文档

在VisualStudio中使用NLog和F#Interactive-需要文档,f#,nlog,f#-interactive,F#,Nlog,F# Interactive,在使用F#Interactive时,我需要捕获F#函数的输入和输出。当程序在VisualStudio下使用F5或Ctrl-F5运行时,我能够让NLog正常工作。同样,包含要输出到日志的语句的方法工作正常,并且在通过F#Interactive调用时调用;日志文件中没有任何内容 我还尝试使用F#Interactive设置对NLog的引用,当从F#Interactive运行时,日志中仍然没有任何内容 #I @"..\packages\NLog.2.0.0.2000\lib\net40" #r @"N

在使用F#Interactive时,我需要捕获F#函数的输入和输出。当程序在VisualStudio下使用F5或Ctrl-F5运行时,我能够让NLog正常工作。同样,包含要输出到日志的语句的方法工作正常,并且在通过F#Interactive调用时调用;日志文件中没有任何内容

我还尝试使用F#Interactive设置对NLog的引用,当从F#Interactive运行时,日志中仍然没有任何内容

#I @"..\packages\NLog.2.0.0.2000\lib\net40" 
#r @"NLog.dll"
我甚至找到了让我尝试每一种方法的原因

NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging()
NLog.Config.SimpleConfigurator.ConfigureForFileLogging(<full file name>)
NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging()
NLog.Config.SimpleConfigurator.ConfigureForFileLogging()
日志文件中仍然没有任何内容

有人知道Nlog是否可以与F#Interactive一起使用吗?
如果是,是如何做到的

编辑

当作为独立运行时,我能够让NLog与fsi.exe一起工作。因此,现在的问题似乎是让NLog找到配置文件,因为NLog无法从Visual Studio的fsi.exe位置开始找到配置文件。查看如何在NLog.dll目录中使用NLog.dll.NLog。

问题 从F#Interactive使用NLog的问题在于,NLog认为
Temp
目录是查找
NLog.config
的地方,因此永远不会成功。解决这个问题的方法是以编程方式为NLog定位
NLog.config

解决此问题需要了解的事项:
  • 在Visual Studio中运行F#Interactive时,它会将当前工作目录设置为临时文件

    >System.Environment.CurrentDirectory;;
    val it:string=“C:\Users\Eric\AppData\Local\Temp”
    
  • NLog日志记录需要三个组件:
    A.对NLog.dll的引用。
    B配置文件。
    C从代码调用记录器方法

  • NLog可以通过多种方式进行配置,包括编程方式和使用配置文件
  • AppData是一个隐藏文件夹。猜猜这在使用Windows资源管理器时意味着什么
  • 要在VisualStudio中使用F#Interactive获取应用程序的位置,您需要
    \uu源代码\u目录\uu
    。见3.11标识符替换
  • NLog.conf可以使用完整的文件路径。显而易见,但却是必要的
  • NLog具有自动刷新选项
  • NLog可以安装到一个使用
  • 这里的大部分信息都来自 我们不会直接跳到F#Interactive解决方案中,而是使用以下过程,因为需要创建DLL来设置和保存函数,以便与F#Interactive中的NLog一起使用

    #I @"..\packages\NLog.2.0.0.2000\lib\net40" 
    #r @"NLog.dll"
    
  • 创建包含三个项目的解决方案并安装NLog。
    解决方案名称:NLogExample
    项目1-库,名称:Log-保存调用NLog的扩展函数
    项目2-库,名称:MyLibrary-用于生成使用日志函数的演示DLL。
    项目3-控制台应用程序,名称:Main-用于生成使用日志函数的演示EXE

  • a。手动创建NLog.config
    B作为正在运行的项目从访问NLog.config
    C将消息记录到文件中

  • a。以编程方式创建配置
    B为正在运行的项目创建配置,并将消息记录到该文件中

  • 使用F#Interactive创建配置并将消息记录到文件中

  • 1.创建包含三个项目的解决方案并安装NLog 使用VisualStudio创建这三个项目

    为所有三个项目安装NLog

    2.a。手动创建NLog.config 注意:对于这些示例,在
    \uuuuu源目录\uuuuuuuuuu
    从F#Interactive运行,它应该报告一个属于项目的目录,而不是
    Temp
    目录

    注意:此答案中的所有路径都是相对于解决方案目录的。
    当您在实际解决方案目录中看到
    替换时

    路径:
    \NLog.config

    
    
    注意:请记住将
    更改为实际路径并设置
    autoFlush=“true”

    注意:将
    NLog.config
    添加到解决方案中可以更轻松地查看/修改文件

    2.b。作为正在运行的项目从访问NLog.config 在Log.Library1.fs中

    名称空间日志
    模块MyLog=
    让我们配置NLOG()=
    让项目路径=\源\目录__
    让soulutionPath=projectPath+“\..”
    让configPath=soulutionPath+@“\NLog.config”
    设xmlConfig=new NLog.Config.XmlLoggingConfiguration(configPath)
    NLog.LogManager.Configuration out+(sprintf“%A\n”目标))out目标
    让规则=NLog.LogManager.Configuration.LoggingRules
    释放=Seq.fold(释放规则->释放+(sprintf“%A\n”规则))释放规则
    出来
    让printNLogConfig()=
    Printf.printfn“%s”(NLogConfigToString())
    
    对于日志项目,添加对
    System.XML

    在Main.Program.fs中

    打开日志
    []
    让主argv=
    MyLog.configureNLog()
    MyLog.printNLogConfig()
    0//返回整数退出代码
    
    对于主项目,添加对
    Log
    项目的引用,并将主项目设置为启动项目

    运行时,应向控制台输出:

    文件目标[文件]
    logNamePattern:(:所有)级别:[跟踪调试信息警告错误致命]附录:[文件]
    
    2.c。将消息记录到文件中 在Log.Library1.fs中

    名称空间日志
    开放式NLog
    模块MyLog=
    让我们配置NLOG()=
    让项目路径=\源\目录__
    让soulutionPath=projectPath+“\..”
    让configPath=soulutionPath+@“\NLog.config”
    设xmlConfig=new NLog.Config.XmlLoggingConfiguration(configPath)
    NLog.LogManager.Configuration out+(sprintf“%A\n”目标))out目标
    让规则=NLog.LogManager.Configuration.Loggin