简体   繁体   English

如何在其他项目中添加NLog类库项目

[英]How add NLog Class Library project in other projects


I have created a console project in C# and in that project I am using NLog for logging purpose. 我在C#中创建了一个控制台项目,在该项目中我使用NLog进行日志记录。
When I run the project, it successfully logging into to multiple targets like Console, File, EventLog and also to Sentinal. 当我运行项目时,它成功登录到多个目标,如Console,File,EventLog和Sentinal。
But when I make this project as a classLibrary and try to add the reference to another project, it's not logging to any of the targets. 但是,当我将此项目作为classLibrary并尝试将引用添加到另一个项目时,它不会记录到任何目标。 And of course there is no error in the project. 当然,项目中没有错误。
Following is the code: 以下是代码:

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");
    //}
}
}

Following is Nlog.config file: 以下是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>

I am adding this project dll to another project and its not working with no error. 我将这个项目dll添加到另一个项目,它没有错误。

I am creating the object to logWrapper class and calling the method to log the information, but it's not working at all. 我正在创建logWrapper类的对象并调用该方法来记录信息,但它根本不起作用。 Kindly let me know the mistake I am doing here. 请让我知道我在这里犯的错误。

WHY it did not run: Does your NEW project have that NLog.config file? 为什么它没有运行:你的新项目是否有NLog.config文件?

IF you need to load from aa single nlog.config for all the projects, you: 如果您需要从所有项目的单个nlog.config加载,您:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM