如何在其他项目中添加NLog Class库项目
How add NLog Class Library project in other projects
我在 C# 中创建了一个控制台项目,在该项目中我使用 NLog 进行日志记录。
当我 运行 项目时,它成功登录到多个目标,如控制台、文件、事件日志以及 Sentinal。
但是当我将此项目作为 class 库并尝试将引用添加到另一个项目时,它不会记录到任何目标。当然项目也没有报错。
以下是代码:
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 class 创建对象并调用该方法来记录信息,但它根本不起作用。
请让我知道我在这里犯的错误。
为什么它没有运行:你的新项目有那个NLog.config文件吗?
IF 您需要从单个 nlog.config 加载所有项目,您:
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration( "<your path>" + "\NLog.config", true);
我在 C# 中创建了一个控制台项目,在该项目中我使用 NLog 进行日志记录。
当我 运行 项目时,它成功登录到多个目标,如控制台、文件、事件日志以及 Sentinal。
但是当我将此项目作为 class 库并尝试将引用添加到另一个项目时,它不会记录到任何目标。当然项目也没有报错。
以下是代码:
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 class 创建对象并调用该方法来记录信息,但它根本不起作用。 请让我知道我在这里犯的错误。
为什么它没有运行:你的新项目有那个NLog.config文件吗?
IF 您需要从单个 nlog.config 加载所有项目,您:
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration( "<your path>" + "\NLog.config", true);