带类库的Nlog

时间:2018-11-09 10:24:46

标签: c# nlog nlog-configuration

我在一个单独的地方有一个类库和配置文件,我想使用它 所以我做以下

LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(configurationFile , true);
LogManager.ReconfigExistingLoggers();

NLog的配置是远程应用程序的一部分。config类似于

<configuration>
    <!-- ... -->
    <configSections>
        <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
    </configSections>
    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <targets>
            <!-- 
              Log in a separate thread, possibly queueing up to
              5000 messages. When the queue overflows, discard any
              extra messages
            -->
            <target name="file" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard" 
                layout="${machinename} - ${level} - ${longdate} - ${callsite} - ${threadid} - ${message} ${exception:format=tostring}">
                <target xsi:type="File" fileName="C:\logs/${level}.txt" />
            </target>
        </targets>
        <rules>
            <logger name="*" minlevel="Debug" writeTo="file" />
        </rules>
    </nlog>
</configuration>

配置对象LogManager.Configuration始终具有默认值,不知道如何解决此问题。

1 个答案:

答案 0 :(得分:1)

在创建第一个NLog Logger对象时,NLog将尝试自动加载NLog.config(或app.config)。搜索多个位置:

https://github.com/nlog/NLog/wiki/Configuration-file#configuration-file-locations

您应该尝试激活NLog内部记录器,然后查看为什么不进行手动加载就无法找到“远程app.config”(可以通过代码启用):

https://github.com/NLog/NLog/wiki/Internal-Logging

不建议类库本身尝试修改全局NLog配置,因为这可能会使主应用程序感到惊讶。如果要为您的类库提供隔离的NLog配置,则应考虑创建隔离的NLog LogFactory:

https://github.com/NLog/NLog/wiki/Configure-component-logging

如果要从非标准路径(不是app.config)加载NLog.config。然后,您也可以这样做:

https://github.com/NLog/NLog/wiki/Explicit-NLog-configuration-loading