sharepoint下的log4net,错过了神奇之处
我花了一上午的时间研究了一整套可能的问题,即为什么在SharePoint 2010下安装时log4net没有写入文件 我尝试了单独的log4net文件路由,但目前正在web.config中配置它 我已经在web.config中将trust更新为medium,log4net dll也在GAC中。当我设置断点时,我的记录器在启用所有日志记录的情况下看起来很好,但是.Info()通过时没有错误,但是日志文件没有创建 幸运的是,我给了每个人&asp.net应用程序池运行方式用户对根日志文件夹的完全控制权。以下是配置代码段和应用程序启动代码:sharepoint下的log4net,错过了神奇之处,sharepoint,sharepoint-2010,log4net,Sharepoint,Sharepoint 2010,Log4net,我花了一上午的时间研究了一整套可能的问题,即为什么在SharePoint 2010下安装时log4net没有写入文件 我尝试了单独的log4net文件路由,但目前正在web.config中配置它 我已经在web.config中将trust更新为medium,log4net dll也在GAC中。当我设置断点时,我的记录器在启用所有日志记录的情况下看起来很好,但是.Info()通过时没有错误,但是日志文件没有创建 幸运的是,我给了每个人&asp.net应用程序池运行方式用户对根日志文件夹的完全控制权
<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很棒,而且在SP2010环境下速度更快。我强烈建议将自定义错误消息写入ULS(现在SP2010中也有DB选项) 好样本
在做了一些挖掘之后,我发现了log4net的一个有用特性,可以让它自己进行诊断 您可以添加以下应用程序设置:
<add key="log4net.Internal.Debug" value="true"/>
我一直认为这是许可证。。。那么这个配置是怎么回事
编辑-工作配置
这里有一个独立的log4net.config,它确实有效(在剪切和粘贴的地方要小心!)
<add key="log4net.Internal.Debug" value="true"/>
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
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.
<?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>