Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
WCF服务中的NLog_Wcf_Nlog - Fatal编程技术网

WCF服务中的NLog

WCF服务中的NLog,wcf,nlog,Wcf,Nlog,我可以在WCF服务中使用NLog吗?我正在努力,但无法让它工作 首先,我在Windows窗体应用程序中设置了一个简单的配置,以检查设置是否正确,这会很好地写入日志文件(我正在使用名称而不是IP地址写入网络位置) 然后我在WCF服务中做了完全相同的事情。它不起作用 为了检查权限,我添加了一些使用TextWriter的代码 TextWriter tw = new StreamWriter(fileName); tw.WriteLine(DateTime.Now);

我可以在WCF服务中使用NLog吗?我正在努力,但无法让它工作

首先,我在Windows窗体应用程序中设置了一个简单的配置,以检查设置是否正确,这会很好地写入日志文件(我正在使用名称而不是IP地址写入网络位置)

然后我在WCF服务中做了完全相同的事情。它不起作用

为了检查权限,我添加了一些使用TextWriter的代码

        TextWriter tw = new StreamWriter(fileName);
        tw.WriteLine(DateTime.Now);
        tw.Close();

这工作正常,因此我知道我可以写信到该位置。

有关如何打开NLog的内部日志记录,请参阅我对您原始问题的评论

要打开NLog的内部日志记录,请修改NLog配置的顶部,如下所示:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
      autoReload="true"       
      internalLogLevel="Trace"       
      internalLogFile="nlog_log.log"       
> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
      autoReload="true"       
      internalLogLevel="Trace"       
      internalLogFile="nlog_log.log"       
      internalLogToConsole="true"
      throwExceptions="true"
> 

我的第一个猜测是NLog没有找到配置信息。您使用的是外部配置文件(NLog.config)还是“内联”配置(在app.config或web.config中)?在项目中,配置文件是否(在属性中)标记为“始终复制”?

检查NLog.config文件是否与.svc文件位于同一目录,而不是Bin目录

如果您刚刚将配置文件添加到WCF项目中,然后将其发布,您可能会发现您的配置文件已复制到bin目录,这就是NLog找不到它的原因。将其移动到一个级别,然后重新启动承载该服务的网站(以确保收到更改)


今天早上,这件事让我难堪了一阵子

将NLog配置放入web.config文件中。像这样:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>

  . . . (lots of web stuff)

  <nlog>
    <targets>
      <target name="file" xsi:type="File" fileName="${basedir}/logs/nlog.log"/>
    </targets>
    <rules>
      <logger name="*" minlevel="Trace" writeTo="file" />
    </rules>
  </nlog>
</configuration>

. . . (大量的网络内容)

尝试通过修改NLog配置的第一行来打开NLog内部日志记录,如下所示:将级别调低到跟踪级别,然后查看它告诉您的内容。该注释的格式不太好。有关如何为NLog打开内部日志记录的示例,请参阅本线程中的“以不同方式处理异常”。按照您的建议,在NLog.config中进行所有设置。文件的其余部分是…'代码“”/code“我没有收到任何错误和问题指示,但也没有日志文件。