C# Log4net未在定义的文件中记录消息
我正在使用visual studio 2010, 对于日志记录,我想创建自己的公共库项目,使用log4net和elmah 从我的其他项目中调用它,可以是另一个库项目、web服务或web应用程序。 因此,使用NuGet,我在App.common c#library项目中安装了common.logging和common.logging.log4net和elmah,并在App.common项目的App.config中添加了以下内容C# Log4net未在定义的文件中记录消息,c#,.net,log4net,elmah,C#,.net,Log4net,Elmah,我正在使用visual studio 2010, 对于日志记录,我想创建自己的公共库项目,使用log4net和elmah 从我的其他项目中调用它,可以是另一个库项目、web服务或web应用程序。 因此,使用NuGet,我在App.common c#library项目中安装了common.logging和common.logging.log4net和elmah,并在App.common项目的App.config中添加了以下内容 <configuration> <configS
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\\App_Data\\log.txt"/>
<appendToFile value="true" />
<datePattern value=".yyyy-MM-dd'.log'"/>
<maxSizeRollBackups value="365"/>
<staticLogFileName value="false"/>
<rollingStyle value="Date" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%date{dd MMM yyyy HH:mm:ss.fff}](%thread) %-5level: %message (%location)" />
</layout>
</appender>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
我的logger类如下所示:
private static log4net.ILog logManager = null;
public static log4net.ILog GetLogManager() {
if (logManager == null) {
logManager = LogManager.GetLogger("DentalAppLogger");
}
return logManager;
}
/// <summary>
/// Log in both Elmah and log4net.
/// </summary>
/// <param name="exc"></param>
/// <param name="message"></param>
public static void Log(string message, Exception exc = null) {
if (exc == null) {
exc = new ApplicationException(message);
}
// Log to log4net
GetLogManager().Error(message, exc);
// Log to ELMAH
if (HttpContext.Current != null) ErrorSignal.FromCurrentContext().Raise(exc, ystem.Web.HttpContext.Current);
}
private static log4net.ILog logManager=null;
publicstaticlog4net.iloggetlogmanager(){
if(logManager==null){
logManager=logManager.GetLogger(“DentalAppLogger”);
}
返回日志管理器;
}
///
///同时登录Elmah和log4net。
///
///
///
公共静态无效日志(字符串消息,异常exc=null){
如果(exc==null){
exc=新应用程序异常(消息);
}
//登录到log4net
GetLogManager()。错误(消息,exc);
//日志到ELMAH
if(HttpContext.Current!=null)ErrorSignal.FromCurrentContext().Raise(exc,system.Web.HttpContext.Current);
}
我已经创建了一个被零除的异常,并从我的App.Webservice调用它来检查日志函数,但是日志文件并没有在调用方AppData文件夹中创建。我遗漏了什么吗?你打电话给我了吗,这样你就可以看到log4net在做什么了,是吗?确保它在目录上有写/修改权限谢谢@CodeCaster,我在我的Web服务中添加了log4net.config并添加了[assembly:log4net.config.xmlconfigulator(ConfigFile=“log4net.config”,Watch=true)]在我的App.Common AssemblyInfo.cs中,它现在正在工作:)。再次感谢你。