2011-02-02 86 views
3

我可以在WCF服务中使用NLog吗?我正试图但无法让它工作。登录WCF服务

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

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

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

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

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

+0

你能发布错误吗? – ryudice 2011-02-03 00:01:07

+0

尝试开启NLog内部日志记录,方法是修改NLog配置的第一行,如下所示:将级别降至Trace并查看它告诉您的内容 – wageoghe 2011-02-03 01:02:34

+0

格式化该评论不太好。请参阅本主题中的”以不同方式处理异常“,以获得有关如何打开NLog内部日志记录的很好示例。 http://stackoverflow.com/questions/4091606/most-useful-nlog-configurations – wageoghe 2011-02-03 01:05:13

回答

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)还是“inline”配置(在你的app.config或web.config中)?在您的项目中,您的配置文件是否标记为(在属性中)为始终复制?

+0

根据你的建议,在NLog.config中设置所有文件其余部分是...'code' \ logfile.txt”keepFileOpen =“false”encoding =“iso-8859-2”/>'/ code'我没有错误,没有任何问题的迹象,但也没有日志文件 – EzaBlade 2011-02-06 12:30:04

0

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

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

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

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>