首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在sharepoint下的log4net,丢失了魔力

在sharepoint下的log4net,丢失了魔力
EN

Stack Overflow用户
提问于 2012-01-19 13:00:30
回答 2查看 1.9K关注 0票数 1

我花了整整一早上的时间来研究为什么log4net在SharePoint 2010下设置时不写文件的可能性。

我尝试过单独的log4net文件路由,但目前正在web.config中配置它。

我在web.config中更新了对媒体的信任,log4net dll也在GAC中。当我断点时,我的记录器看起来很好,启用了所有日志记录,但是.Info()通过时没有出错,但是日志文件没有创建。

幸运的是,我已经给了每个人& asp.net应用程序池,runas用户完全控制根日志文件夹。下面是配置片段和App_Start代码:

代码语言:javascript
复制
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
    ...

    <log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="c:\temp\log.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
  </log4net>




    private static ILog logger; 

    protected void Application_Start(object sender, EventArgs e)
    {
      ////This tells log4net where to go and look for its configuration file and also to watch it for any changes
      //log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Config\Moogle\Log4Net.config"));

      SPSecurity.RunWithElevatedPrivileges(delegate
        {
          log4net.Config.XmlConfigurator.Configure();

          logger = LogManager.GetLogger("Moogle.Web");
          logger.Info("Application_Start Fired");
        });
    }

编辑将我的配置更新到上面(请参阅我的答案),我仍然收到log4net消息:

代码语言:javascript
复制
log4net: XmlHierarchyConfigurator: Hierarchy Threshold []
log4net: Logger: No appenders could be found for logger [Moogle.Web] repository [log4net-default-repository]
log4net: Logger: Please initialize the log4net system properly.

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-20 09:53:20

在做了一些调查之后,我发现了log4net的一个有用的特性,要求它做自己的诊断。

您可以添加折叠应用程序设置:

代码语言:javascript
复制
<add key="log4net.Internal.Debug" value="true"/>

和下一节:

代码语言:javascript
复制
<configuration>
    ...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>

    ...
</configuration>

我现在可以看到,它的配置显然是错误的,因为它正在报告:

代码语言:javascript
复制
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using .config file section
log4net: XmlConfigurator: Application config file is [C:\inetpub\wwwroot\wss\VirtualDirectories\MOOGLEDEV0180\web.config]
log4net: XmlConfigurator: Configuring Repository [log4net-default-repository]
log4net: XmlHierarchyConfigurator: Configuration update mode [Merge].
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [ALL].
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="ALL",value=-2147483648].
log4net: XmlHierarchyConfigurator: Hierarchy Threshold []
log4net: Logger: No appenders could be found for logger [Moogle.Web] repository [log4net-default-repository]
log4net: Logger: Please initialize the log4net system properly.

我一直以为这是许可..。那配置是怎么回事?

编辑-工作配置

这里有一个独立的log4net.config,它确实有效(小心您从哪里剪切和粘贴!)

代码语言:javascript
复制
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/>
  </configSections>
  <log4net>
    <appender name="RollToFile" type="log4net.Appender.RollingFileAppender">
      <file value="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Logs\Moogle\Moogle.Web.Log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <!-- Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
      <priority value="ALL"/>
      <appender-ref ref="RollToFile"/>
    </root>
  </log4net>
</configuration>
票数 1
EN

Stack Overflow用户

发布于 2012-01-19 21:38:49

我知道log4net很棒,而且在SP2010上下文中速度要快得多,我强烈建议将自定义错误消息写入ULS (现在SP2010中也有DB选项)。

良好的样本http://sharepointnadeem.blogspot.com/search/label/SharePoint%20Diagnostic%20Service

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8926425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档