2012-08-28 73 views
0

我不知道是否可以使用log4net执行以下操作。Log4net外部配置(C#)

我有一个服务,它在启动时从数据库读取其所有配置。在配置中有日志配置,如“日志级别”和“日志文件位置”。

要求是写入所有日志,包括从服务启动日志到从数据库读取的日志文件位置(当然如果连接到数据库时有任何问题)。

一位同事写了一个非常简单的日志类来满足这个要求,但我真的想使用log4net来使用log4net已经提供的几个功能。

你有什么想法如何做到这一点?

回答

0

最简单的方法是在启动时从数据库读取现有配置,然后生成一个与log4net格式匹配的外部配置文件。

然后,你可以问log4net的直接读取这个文件,本文中的“读文件直接”节之后,

http://logging.apache.org/log4net/release/manual/configuration.html

+0

这解决了问题的一半,但真正的“问题”是,来自服务启动的日志不会写入数据库中配置的日志路径。 PS。我不直接从数据库中读取配置,该服务被集成到一个框架中,该框架通过一个内部与配置服务器建立TCP连接的API连接,以获得服务配置。我有兴趣将此连接记录到已配置的日志路径中 –

+0

可以在启动时提供一组默认的log4net设置,以便在加载新设置之前,所有日志条目都转到默认日志文件?如果您想排查连接故障,那么这是一种解决方法,可为您提供足够的信息。或者,如果您确实想将所有日志条目写入“logpath”,则在加载新设置之前,您必须缓存日志条目。我从来没有这样做,我不确定log4net是否已经有一些支持缓存。 –

+0

准确地说,对缓存的支持是我正在寻找的。我不知道,也许使用自定义appender或修改log4net中的某些属性。我提出了同样的解决方法,但是显然这是不可接受的,这就是为什么我们使用一个同事非常简单的记录器实现。 –