在VisualStudio中使用NLog和F#Interactive-需要文档
在使用F#Interactive时,我需要捕获F#函数的输入和输出。当程序在VisualStudio下使用F5或Ctrl-F5运行时,我能够让NLog正常工作。同样,包含要输出到日志的语句的方法工作正常,并且在通过F#Interactive调用时调用;日志文件中没有任何内容 我还尝试使用F#Interactive设置对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
#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
解决此问题需要了解的事项:
>System.Environment.CurrentDirectory;;
val it:string=“C:\Users\Eric\AppData\Local\Temp”
A.对NLog.dll的引用。
B配置文件。
C从代码调用记录器方法
\uu源代码\u目录\uu
。见3.11标识符替换#I @"..\packages\NLog.2.0.0.2000\lib\net40"
#r @"NLog.dll"
解决方案名称:NLogExample
项目1-库,名称:Log-保存调用NLog的扩展函数
项目2-库,名称:MyLibrary-用于生成使用日志函数的演示DLL。
项目3-控制台应用程序,名称:Main-用于生成使用日志函数的演示EXE
B作为正在运行的项目从访问NLog.config
C将消息记录到文件中
B为正在运行的项目创建配置,并将消息记录到该文件中
\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