代码之家  ›  专栏  ›  技术社区  ›  Nico

sharepoint和log4net

  •  10
  • Nico  · 技术社区  · 16 年前

    我正在寻找将log4net集成到sharepoint的最佳实践,以实现web请求、功能激活和所有计时器功能。

    我的服务器场中有几个子项目,我希望只有一个log4net.config文件。

    [编辑]
    我不仅需要为web应用程序配置log4net,这很简单(我使用global.asax和log4net.config文件,因此可以在重新加载webapp的情况下修改日志设置),而且还需要记录异步事件:

    • 事件处理程序(如itemAdded)
    • 定时器作业
    4 回复  |  直到 16 年前
        1
  •  9
  •   TheCodeKing    15 年前

    我最近实现了这个,并提出了一个解决方案,为我工作。

    使用全局范围的解决方案将log4net配置文件部署到12配置单元,并将log4net dll部署到gac中。然后在应用程序代码中从全局文件的位置显式初始化log4net。这允许您记录功能接收器、计时器作业和web应用程序代码。

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = 
        @"C:\Program Files\Common Files\Microsoft Shared\" + 
        @"Web Server Extensions\12\CONFIG\log4net.config", Watch = true)]
    

    看到这里 http://www.codeproject.com/KB/sharepoint/SharepointLog4Net.aspx

        2
  •  1
  •   Alex Angas Colin    16 年前

    首先,需要修改sharepoint虚拟目录所在的web.config。这是因为您需要添加safecontrol条目来信任log4net程序集。可以使用功能接收器中的spwebconfigmodification类以编程方式更新web.config。由于无论如何都必须修改web.config,您可能需要考虑在内部包含log4net配置,而不是设置外部log4net配置。

    但是,如果仍要执行此操作,则可以在web.config文件中添加以下内容:

    <configuration ...>
      ...
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <log4net configSource="log4Net.config">
      ...
    </configuration>
    

    然后log4net.config文件应该能够与web.config共存。正如nat所说,您可以将此文件部署为解决方案包。

    假设您试图运行最小信任,则需要更新代码访问安全文件以同时包含log4net程序集。然后,所有自定义的sharepoint代码都应该自动使用log4net配置。

        3
  •  0
  •   Nat    16 年前

    您可以将配置文件作为解决方案包的一部分发布到12配置单元(使用 STSDev )创建任何包)。这将为配置提供一个设置位置,对配置的任何更改都可以以受控的方式发布(即不需要手动编辑,只需回滚并重新安装解决方案)。

        4
  •  0
  •   Athens Holloway    15 年前

    我开发了log4net特性并将其打包到wsp文件中。当在http模块中引发应用程序启动事件时,功能接收器将http module添加到web.config,httpmodule从layouts目录加载log4net.config。

    推荐文章