我正在尝试查看日志事件是否在我的应用程序中发生,以及是否发生了某些事情.
我已经检查了所有地方,并且似乎找不到日志事件的任何信息.
private static Logger logger = LogManager.GetCurrentClassLogger();
logger.Info("Info Log Message");
if(logger.event == true)
{
//an log even happen this run
}
解决方法:
看起来您可以使用MethodCall目标来完成此任务.
您可以在NLog.config文件中添加一个目标条目,该条目将日志事件定向到您的一个类中的静态方法.有关如何执行此操作的更多详细信息,请参见documentation.
您也可以按如下所示的代码直接执行此操作(示例从文档复制到此处):
using NLog;
using NLog.Targets;
using System.Diagnostics;
public class Example
{
public static void LogMethod(string level, string message)
{
Console.WriteLine("l: {0} m: {1}", level, message);
}
static void Main(string[] args)
{
MethodCallTarget target = new MethodCallTarget();
target.ClassName = typeof(Example).AssemblyQualifiedName;
target.MethodName = "LogMethod";
target.Parameters.Add(new MethodCallParameter("${level}"));
target.Parameters.Add(new MethodCallParameter("${message}"));
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Debug);
Logger logger = LogManager.GetLogger("Example");
logger.Debug("log message");
logger.Error("error message");
}
}
我只是意识到,如果您只想检查是否调用了特定的记录器,我的答案可能不会回答您的问题.如果是这样,您可以使用规则仅从某个记录器获取事件,如文档的Logger-specific routing部分所示.
您需要将条目添加到< rules> NLog.config的一部分,它引用您已定义的目标.我不知道是否有一种方法可以设置您的目标代码并将其与此规则结合.您可能必须在配置文件中定义目标:
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
</targets>
<rules>
<logger name="SomeNamespace.Component.*" minlevel="Trace" writeTo="logfile" final="true" />
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
标签:nlog,c 来源: https://codeday.me/bug/20191028/1950648.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。