2010-07-15 50 views
8

我正在写一个类库作为抽象用于登录我写的任何应用程序,服务等。我通过使它非常可配置,以适应我遇到的大多数应用程序/服务日志记录场景的需求,从而使它体面健壮。将App.config应用到我的DLL程序集?

的配置设计指定的东西,如:

  • 什么日志记录级别写
  • 写入到一个日志文件,各级
  • 写每
  • 水平单独的文件
  • 日志截止(周期性,应用程序事件,字节大小受限)
  • 日志文件过期(在文件时效后删除日志文件)
  • 写为纯文本或XML
  • 日志文件名格式规范
  • 是否与日期
  • 父应用程序的名称
  • 等,等,等...

我的文件名前缀已经阅读了关于DLL程序集配置的一些其他的stackoverflow问题,它导致了主机程序集/ app的app.config之间的冲突。我相信我的程序集只是提供一个配置文件。

这是一个很好的场景吗?将我自己的配置文件烘焙到我的项目中以便我的记录器从XML文件中读取以检索配置值可能是一个更好的主意吗?

+2

查看现有的日志库,例如apaches log4net http://logging.apache.org/log4net/index.html - 这个也可以很容易地扩展。也许不值得编写一个全新的日志库。 – 2010-07-15 13:26:20

+0

@bja,感谢您的建议。我为一个正在工作的项目编写了大量日志代码,并决定将大部分代码用作未来应用程序的基础。我之前尝试过使用日志框架,并且因为我的部门而感到沮丧。想要使用.Net 4.0,并且在使用它的时候遇到了一些问题。所以我最终实现了我自己的轻量级日志记录。然而,非常感谢这个建议,我通常会同意这个想法,但是它没有理由不重用我自己的代码。 – jlafay 2010-07-15 13:32:56

+0

@jlafay无论如何我都会建议看看它们 - 不要重复使用它们的代码 - 但要看看它们是如何通过App.config文件实现配置的 - 通过应用程序配置日志框架非常常见。配置文件,并且您可以使用自己的框架遵循相同的练习。 :-) – BrainSlugs83 2016-07-19 02:30:13

回答

8

你可以做的是

  • 创建自定义配置部分(例如使用在COnfiguration Section Designer工具)

  • 把你的组件的配置到一个单独的MyAssembly.config文件

  • 参考,从您的主机应用程序的配置组件的配置文件:

    <configuration> 
        <configSections> 
         <section name="YourAssembly" 
           type="YourAssembly.ConfigSection, YourAssembly" /> 
        </configSections> 
    
        <YourAssembly configSource="MyAssembly.config" /> 
    </configuration> 
    

这样一来,就可以“外部化“你的配置到一个单独的配置文件中,你只有一次(在你的程序集项目中),任何需要它的项目只需要在它自己的配置文件中进行设置。

+0

+1链接。多年来,我一直在手动编写ConfigurationSection和ConfigurationSectionGroup类。这个工具看起来像一个救生员! – Toby 2010-07-15 13:47:53

+0

我认为这是我的配置需求的最佳解决方案。感谢您的配置部分设计师的链接! – jlafay 2010-07-15 14:23:15

3

听起来像一个自定义配置节会适用于你的情况。许多图书馆,比如企业图书馆都是这样做的。查看MSDN article关于创建一个。

3

.NET配置机制并不意味着处理DLL的配置文件。您应该使用适当的设置配置您的应用程序,并将它们传递给您正在从DLL实例化的类。


可以像设置应用程序一样为DLL项目添加设置。所有你需要做的就是手动将相关的部分和条目复制到应用程序的app.config中,它将起作用。

但是,仍然没有意义的是复制DLL的配置文件。它不会被读取。

+1

因为我将用于广泛的软件应用程序,使用配置文件实时配置它,我可以快速编辑而不是在实例化记录器时填充属性主机应用? – jlafay 2010-07-15 13:28:05

+0

@jlafay - 不,然后你添加一个隐藏的依赖到你的DLL。您仍然可以创建一个配置文件 - 只需让您的*应用程序*读取配置文件(或复制到其配置文件的一部分)并将设置传递给您的DLL中的类。 (和+1。) – 2010-07-15 13:51:52

+0

Err ...,很多dll都需要.config文件更改(特别是日志框架dll)。您只需将相关的配置部分添加到您的app.config中,并且它可以在没有额外的代码更改的情况下运行。 – BrainSlugs83 2016-07-19 02:21:55

2

另一种机制是为您的程序集配置一个单独的配置文件(* .dll.config)。该技术如下所示:http://blog.rodhowarth.com/2009/07/how-to-use-appconfig-file-in-dll-plugin.html

上面,模拟组件的标准app.config技术。

在我看来,dll配置阅读代码应该只存在于相应的dll和一个独立的类中 - 单独负责从* .dll.config中读取配置条目。这是以类似于可执行文件的配置文件(app.config)的方式为程序集配置文件的好方法。

相关问题