3

我可以在 WCF 服务中使用 NLog 吗?我正在尝试但无法使其正常工作。

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

然后我在 WCF 服务中做了完全相同的事情。那没起效。

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

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

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

4

3 回答 3

0

有关如何打开 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"       
> 

关键部分是 internalLogLevel 和 internalLogFile。

您还可以设置internalLogToConsoletruefalse内部日志记录定向到控制台。

还有另一个设置,throwExceptions告诉 NLog 是否抛出异常。通常,一旦日志记录成功配置并正常工作,它就会设置为 false。您可以将其设置为 true 以帮助确定您的问题是否是由 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"       
      internalLogToConsole="true"
      throwExceptions="true"
> 

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

于 2011-02-03T14:42:33.060 回答
0

将您的 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>
于 2012-01-20T08:16:04.673 回答
0

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

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

这让我今天早上难倒了一段时间!

于 2011-02-23T12:02:52.237 回答