Tag: nlog

如何强制重新加载NLog配置文件?

我正在使用NLog配置文件。 为了避免为长时间的治疗记录过多的东西,我正在做这样的事情: foreach (LoggingRule rule in LogManager.Configuration.LoggingRules) { rule.DisableLoggingForLevel(LogLevel.Trace); rule.DisableLoggingForLevel(LogLevel.Debug); } LogManager.ReconfigExistingLoggers(); 它允许我暂时降低日志记录详细信息级别。 上面的几行只是一个例子来说明。 这似乎完美无缺。 之后,我想恢复我的“常规”日志记录配置,只需重新加载已在程序启动时自动加载的NLog.Config文件 。 我试过了 : LogManager.Configuration.Reload(); LogManager.ReconfigExistingLoggers(); 我认为这很容易但配置.Reload没有做我期待的事情,我没有找到任何其他合适的方法。 在调用之后,我的记录器在程序启动时仍然没有存储跟踪和调试事件。 所以我的问题是:如何以编程方式强制在运行时重新加载NLog.config并恢复我的“标准”记录器设置? 谢谢 有关详细信息的问题更新: 我正在使用VS2013,.Net 4 projet和NLog 4.4.0-beta11(beta但是最后一个在nuget上),简单的“文件”目标在配置文件中定义,minLevel = Trace和autoReload = True Logger在类级别实例化:private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); 这是我的测试证据: Assert.True(Logger.IsTraceEnabled); Assert.True(Logger.IsDebugEnabled); Logger.Trace(“1 – This should appear in log”); Logger.Debug(“2 – This should […]

在nlog中以编程方式创建数据库以启用DatabaseTarget

我正在C#中创建一个DatabaseTarget对象,并使用它将数据记录到NLog数据库中。 如果数据库不存在,则nlog目标将失败。 我想检查数据库是否存在,以及它是否不创建它和日志表。 我可以看到targetDB.Install(installationContext)函数似乎能够完成这项工作但找不到任何示例。 使用配置文件有很多例子。 我想把它放在代码中,而不必在所有使用包含此代码的DLL的应用程序中部署配置文件。 如何检查并创建数据库?

NLog xsi:键入不使用自定义目标

我想在NLog中使用以下命令编写自定义目标: https : //github.com/nlog/nlog/wiki/How%20to%20write%20a%20Target 并将我的日志写入MongoDB,所以我的代码如下所示: namespace NLog.Mongo { [Target(“Mongo”)] public sealed class MongoDBNLogTarget : Target { … protected override void Write(NLog.LogEventInfo logEvent) { Repository.Insert(logEvent); } } } 我想我的NLog.config文件应如下所示: 但是我收到警告: This is an invalid xsi:type ‘http://www.nlog-project.org/schemas/NLog.xsd:Mongo’

使用NLog在.NET中记录方法的进入和退出

我想记录方法入口并使用NLog退出。 我发现了两种方法。 第一个,使用PostSharp,但需要购买。 第二种方法,使用unity,但我们只能在具有接口的方法上实现它。 例如,我有一个名为SampleController的控制器 SampleController.cs public string Get() { BusinessLayerClass businessLayer = new BusinessLayerClass(); return businessLayer.BusinessLayerMethod(); } BusinessLayerClass.cs public class BusinessLayerClass { public string BusinessLayerMethod() { DataLayerClass dataLayerClass = new DataLayerClass(); return dataLayerClass.DataLayerMethod(); } } DataLayerClass.cs public class DataLayerClass { public string DataLayerMethod() { return “Hi”; } } 我在示例控制器中有两个类BusinessLayerClass和DataLayerClass.Get方法,在BusinessLayerMethod中调用BusinessLayerMethod ,并从中调用DataLayerMethod 。 我有一个NLogging类用于记录目的 NLogging.cs public […]

如何使用AutoFac解析正确的记录器类型?

我正在更新使用AutoFac的遗留项目,我想将NLog与简单记录外观(SLF)一起使用 我以前在Ninject中使用过它,设置起来非常简单,我只需要做类似的事情: kernel.Bind().ToMethod(x => LoggerFactory.GetLogger(x.Request.Target.Member.ReflectedType)); 输出将是这样的: NLogNinjectSlf.Services.MyService 2013-12-30 15:21:10.5782 DEBUG日志从注入的Logger 小菜一碟 但现在我必须使用AutoFac,我不知道如何获得需要记录器的Target类型 例如,如果我有以下接口/类: public interface IMyService { void DoSomething(); } public class MyService : IMyService { private readonly ILogger _logger; public MyService(ILogger logger) { _logger = logger; } public void DoSomething() { _logger.Debug(“Log from injected Logger”); } } 我希望能够获得MyService类的类型,将其用作记录器的名称 在AutoFac中,这是我到目前为止所尝试的: var containerBuilder = new ContainerBuilder(); […]

如何在同一解决方案中使用多个项目的NLog

我在网上搜索了一个非常简单的问题。 我的解决方案是一个exe(WPF)项目和四个类库 。 我需要一个日志记录,我喜欢NLog。 如何在一个解决方案中的所有5个项目中使用它? 我不知道,我是否需要创建(或获取某个地方)从所有项目引用的包装类项目并从那里使用Nlog? 我看到为log4Net写的这样的东西。 或者这种情况是否有一些模式或最佳实践?

NLog没有写入事件日志.NET Core 2.1

我已经将NLog添加到我的.NET核心控制台应用程序中,它可以处理文件和数据库目标。 但是,当我尝试使用eventviewer时,它不会记录任何内容。 当我为eventviewer目标添加代码时,文件和数据库部分不记录任何内容。 当我删除它时,日志记录再次开始工作。 我使用Powershell为应用程序添加了一个新的事件查看器源,因此这不是问题。 应用程序不会崩溃或报告错误,它运行正常,但在包含事件查看器时不记录任何内容。 Server=test; Database=test; User Id=sa; Password=password; INSERT INTO dbo.Log (Application, Logged, Level, Message, Logger, CallSite, Exception ) VALUES (@Application, @Logged, @Level, @Message, @Logger, @Callsite, @Exception); 关于如何实现这个或者我错过了什么的任何想法?

NLog:强制BufferingTargetWrapper在AppDomain UnhandledException上清空

我在我的应用程序中配置了NLog,以使用BufferingTargetWrapper通过MailTarget发送电子邮件。 我遇到的问题是在应用程序退出Unhandled Exceptions之前,我找不到强制NLog清空BufferingTargetWrapper的方法。 我尝试从当前应用程序域的UnhandledException事件调用LogManager.Flush()和LogManager.DisableLogging()但它没有缝合工作。 我需要做些什么才能发送电子邮件?

NLog使用NLog.config动态更改文件名

如何使用C#中的变量动态更改FileName? 我的想法是创建一个日志文件,如Log__${date:format=yyyy-MM-dd}.log 。 有任何想法吗?

记录exception属性

是否可以使用NLog记录exception的属性? 例如,SocketException具有ErrorCode,HResult,NativeErrorCode等属性,这些属性仅特定于此类exception。 可以在没有显式记录(即不使用Log(e.ErrorCode) )的情况下Log(e.ErrorCode)它们并使用代码中的ErrorException吗? 默认的Exception布局渲染器只是在exception上调用ToString。