Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在Azure应用程序服务上生成日志NLog内部日志文件_C#_Azure_Logging_Nlog_Azure App Service Envrmnt - Fatal编程技术网

C# 无法在Azure应用程序服务上生成日志NLog内部日志文件

C# 无法在Azure应用程序服务上生成日志NLog内部日志文件,c#,azure,logging,nlog,azure-app-service-envrmnt,C#,Azure,Logging,Nlog,Azure App Service Envrmnt,我在Azure应用程序服务上运行网站和webjobs,我希望启用NLog内部调试来解决一些日志记录问题。在我的NLog配置代码中,我执行以下操作: InternalLogger.LogLevel = LogLevel.Trace; InternalLogger.LogFile = "nlog.txt"; 在开发过程中本地运行时,nlog.txt显示在应用程序二进制目录(bin)中。在Azure上它不会显示。假设可能存在文件系统权限问题,我将代码更改为: InternalLogger.LogLe

我在Azure应用程序服务上运行网站和webjobs,我希望启用NLog内部调试来解决一些日志记录问题。在我的NLog配置代码中,我执行以下操作:

InternalLogger.LogLevel = LogLevel.Trace;
InternalLogger.LogFile = "nlog.txt";
在开发过程中本地运行时,
nlog.txt
显示在应用程序二进制目录(
bin
)中。在Azure上它不会显示。假设可能存在文件系统权限问题,我将代码更改为:

InternalLogger.LogLevel = LogLevel.Trace;
InternalLogger.LogFile = @"d:\logfiles\nlog.txt";
Azure应用程序服务保证
d:\logfiles\
目录是可写的。但是仍然没有
nlog.txt
文件


想法?

实际上,
LogFiles
文件夹位于Azure中的
D:\home
下(您提到的文件路径是
D:\LogFiles\
,因此我还尝试直接在
D:
驱动器下创建
LogFiles
文件夹,但出现了500个内部服务器错误)

请尝试将InternalLogger.LogFile的值更改为
d:\home\LogFiles\nlog.txt
,如
InternalLogger.LogFile=@“d:\home\LogFiles\nlog.txt”

我可以使用以下代码查看azure中生成的nlog.txt:

 InternalLogger.LogLevel = LogLevel.Trace;
 InternalLogger.LogFile = @"d:\home\LogFiles\nlog.txt";
 InternalLogger.Log(LogLevel.Trace, "a text message from here....");
您可以参考下面的图片了解测试结果


您是否尝试从应用程序写入目录
d:\logfiles\test.txt
。只是想看看您的应用程序是否具有适当的权限?@Rolf Yes-我将所有日志文件都写在那里。在创建任何记录器对象之前,请确保配置
InternalLogger
,即使是Program.cs类中可能存在的静态记录器对象。更正-我的意思是“d:\home\logfiles”。我的代码是正确的,但我在这里写错了。我的代码是正确的,带有
d:\home\logfiles`;我只是写错了。奇怪的是,我将路径更改为
d:\local\temp`,这是一个可写空间(但不推荐使用,因为操作系统可以随时擦除它),并且我成功地编写了nlog内部记录器文件。这非常奇怪,因为d:\home\logfiles\正是nlog写入普通日志文件的地方!我被更正了-我的代码确实错了-我指向了错误的(只读)位置。哦。。。