【问题标题】:How add NLog Class Library project in other projects如何在其他项目中添加 NLog 类库项目
【发布时间】:2015-09-28 07:20:36
【问题描述】:


我在 C# 中创建了一个控制台项目,并且在该项目中我使用 NLog 进行日志记录。
当我运行该项目时,它成功登录到多个目标,例如控制台、文件、事件日志以及 Sentinal。
但是,当我将此项目作为 classLibrary 并尝试将引用添加到另一个项目时,它不会记录到任何目标。当然,项目中没有错误。
以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NLog;
using NLog.Config;

namespace NLogger
{
public class logWrapper
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    public void LevelLogger(string level, string msg)
    {
        if (level == "Trace")
            Trace(msg);
        else if (level == "Info")
            Info(msg);
        else if (level == "Error")
            Error(msg);
        else if (level == "Debug")
            Debug(msg);
        else if (level == "Warn")
            Warn(msg);
    }

    public void Trace(string msg)
    {
        try
        {
            logger.Trace(msg);
        }
        catch (Exception ex)
        {
            throw;
        }
    }

    public void Info(string msg)
    {
        logger.Info(msg);
    }

    public void Error(string msg)
    {
        logger.Error(msg);
    }
    public void Debug(string msg)
    {
        logger.Debug(msg);
    }
    public void Warn(string msg)
    {
        logger.Warn(msg);
    }

    //Uncomment following when the project type is Console App. --Debugging purpose only

    //public static void Main(string[] args)
    //{
    //    logWrapper l = new logWrapper();
    //    l.LevelLogger("Info", "INFORMATION");
    //}
}
}

以下是 Nlog.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<targets>
<target xsi:type="File" name="file" layout="${longdate}|${level}|${message}|${callsite:fileName=true}${newLine}"
        fileName="C:\Users\sharathk\Desktop\ToCompare\${shortdate}_Log.txt"/>
<target name="viewer" xsi:type="NLogViewer" address="udp://10.100.18.166:9999"/>
<target xsi:type="EventLog" name="event" layout="${longdate}|${level}|${message}|${callsite:fileName=true}" source="NLogger"/>
<target name="console" xsi:type="Console"
        layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}" />
 </targets>

 <rules>
  <!-- add your logging rules here -->
 <logger name="*" minlevel="Trace" writeTo="file,event,viewer,console" />
 </rules>
</nlog>

我正在将此项目 dll 添加到另一个项目,但它无法正常工作。

我正在为 logWrapper 类创建对象并调用方法来记录信息,但它根本不起作用。 请让我知道我在这里犯的错误。

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    为什么它没有运行:你的新项目有那个 NLog.config 文件吗?

    如果您需要从单个 nlog.config 加载所有项目,您:

    NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration( "<your path>" + "\\NLog.config", true);
    

    【讨论】:

    • 不,这是必需的吗?我的意图是将 NLog 项目保留为一个单独的项目,并将它的 dll 放在“n”个项目中。
    • 每个项目都需要定义配置。 DLL 在许多项目之间共享,但每个项目可以有不同的记录方式。所以,每个项目都应该有自己的 nlog.config 文件。
    • 如果我在每个引用 NLog 的项目中都包含配置文件,那么我打算将单个 Nlog.config 文件用于所有项目的意图将被打破。我需要在 NLog 项目中维护一个 NLog.config 文件,而不是在任何其他项目中。
    • 您的问题不清楚。你问为什么它没有运行,并且你想在多个项目中部署你的 logWrapper。您没有指出您需要在所有项目中拥有一个 nlog.config 文件。我已经更新了答案。
    • 我应该在哪里添加该代码?在哪个项目中,要么在 NLog 中,要么在引用 NLog 项目的项目中。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多