NLog在WCF服务中

时间:2011-02-02 23:59:52

标签: wcf nlog

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

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

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

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

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

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

3 个答案:

答案 0 :(得分: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。

您还可以将internalLogToConsole设置为truefalse,以将内部日志记录定向到控制台。

还有另一个设置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中)?在您的项目中,您的配置文件(在“属性”中)是否标记为“始终复制?”

答案 1 :(得分:0)

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

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

这让我今天早上难过了一会儿!

答案 2 :(得分: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>