2015-10-06 46 views
1

我在网上没有发现任何东西 - 是否有可能重新加载NLog的配置后,它停止记录,因为一个无效的配置,并再次开始记录?无效配置后重新加载NLog配置

我有一个长时间运行的应用程序,它不喜欢重新启动,但我必须不时更改日志级别和目标,以便调试/告诉客户系统中单个记录会发生什么情况。

有时,在日志记录配置错误,NLOG通过autoReload=true重装之后停止采伐后,我调整了配置不重新开始。有没有办法告诉NLog它可以再次读取配置?

回答

0

如果你愿意,你可以从API重新加载配置,LogManager.Configuration.Reload()

有时,在日志记录配置错误,NLOG通过

此bug已被固定在4.0 NLOG“自动重=真正的”重装之后停止记录。见bug reportnews post

+0

谢谢你指出这一点!看起来是时候升级了。 –

0

是否有任何理由手动更改配置,而不是通过应用程序中的设置更改配置?

在我当前的项目中,我们在应用程序中设置了一些设置,它们将在运行时更改NLog的配置,这意味着您不必停止然后开始每次配置更改。这意味着我们可以在运行期间处理诸如日志记录级别或日志文件之类的内容,而不必依靠重新启动。

我想说,让用户能够在设置中更改这些设置以便于使用,并且更容易解释如何更改设置,而不是解释如何更改文件。这些都在NLog API中提供,非常实用。这是假设用户有权访问更改设置,如果他们必须手动更改配置文件,我会假设他们会这样做。

+0

客户自己不改变日志级别;我们负责维护软件并不时更改配置。我们使用NLog的auto-reload属性让它在更改后在运行时(!)重新加载配置文件。所以通过应用程序设置配置是不可行的。当我们需要调查并且不能依赖一组固定的配置更改时,也有特殊情况(应用程序真的很庞大,只需设置要跟踪的所有内容的级别就会减慢它的速度)。 –

+0

@trevorcolby对不起,它听起来像客户必须从你的问题本身改变配置。说实话,它仍然听起来像你在你的应用程序中需要一种允许更改日志记录的机制,可能在应用程序的每个部分都有自己的日志记录级别,并且在发送到NLog之前进行筛选。但我希望能够在您的应用程序中告诉NLog没有记录日志,并且有效地新建一个新实例并不困难,但会要求您的应用程序了解日志文件未被写入。 –

+0

@trevorcolby ...我不知道我是否想亲自做这件事,因为它需要进行文件检查,以确保没有写入操作。如果将LogManager.ThrowsExceptions设置为true,会发生什么情况,如果更改后配置不正确,是否会发生异常? –