3

可能重复:
在 WinForms 应用程序中引用 log4net DLL 的正确方法

我的 WinForms 解决方案有 2 个项目:1 个用于项目特定代码,另一个用于可重用代码。我从两个项目中引用 log4net.dll。我将 dll 保存在主解决方案文件夹下的 libs 文件夹中,并从两个项目中引用此 DLL。注意:这是一个物理文件夹,而不是解决方案文件夹。

我想在两个项目都可以读取的单个 xml 文件中指定 log4net 配置设置。

  1. 我在哪里保存这个 xml 文件?
  2. 如何指向 log4net XmlConfigurator 来读取这个 xml 文件?
  3. 如果我不想硬编码 xml 文件名和路径,有哪些选项?

  4. (可选问题)假设我不想遵循使用完全限定类名作为记录器名称的约定;而是在运行时,我想从 xml 文件中读取每个类的记录器名称(目的是隔离外部文件中的父子记录器关系并稍后决定);那么有哪些选择呢?

我正在使用 C# 2.0。

虽然这些听起来像是很多问题,但对于经验丰富的 log4net 开发人员来说应该很简单,我猜!

编辑 1:我不想在 app.config 文件本身中混合 log4net 配置。

谢谢。

4

1 回答 1

1

我想我找到了解决方案。

  1. 我现在将 XML 文件保存在项目的项目文件夹中,该文件夹标记为启动项目。在项目的文件属性中,我已将“复制到输出目录”设置为“如果较新则复制”

  2. 我使用程序集级别属性将 log4net XmlConfiguration 指向此 XML 文件:

    [程序集:log4net.Config.XmlConfigurator(ConfigFile="LogConfig.xml",Watch = true)]

  3. 目前我已经在上面的属性中硬编码了文件名。如果以后我不想硬编码,我可以在 app.config 文件的 appSettings 部分插入一个 log4net.Config 键。

  4. 如果我想从 xml 文件中读取每个类的记录器名称,我可以在 app.config 文件中为每个完全限定的类名称插入适当的键,然后从那里读取。

如果有人有其他想法,请发布。

于 2013-01-01T21:43:12.607 回答