Ich möchte eine Common.logging und log4net auf Projektwrapper verwenden, ich erstellte eine log4net.config-Datei auf meinem Protokollierungsprojekt und ich konfigurierte meine web.config-Datei, aber ich habe eine Ausnahme, wenn ich es versuche alles protokollieren (Fehler, Info, etc). Ich dachte, das Problem ist in der Datei web.config, aber ich habe ausgecheckt und ich sehe nichts falsch.Gemeinsame Protokollierung log4net file-watch
Der Ausnahmefehler ist
ein Fehler aufgetreten den Konfigurationsabschnitt Handler für common/Protokollierung Erstellen: Kann nicht Typ ‚Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, schaffen Common.Logging.Log4Net
DLL
Common.Logging.2.0.0
Common.Logging.Log4Net.2.0.1
log4net.1.2.10
Wrapper-Klasse
using System;
using System.Diagnostics;
using Common.Logging;
using System.Reflection;
namespace LoggerL
{
public class Logger
{
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//static Logger()
//{
// XmlConfigurator.Configure();
//}
public static void Info(string msg = "")
{
var method = new StackFrame(1).GetMethod();
var name = method.DeclaringType.FullName + "." + method.Name + "(";
foreach (var item in method.GetParameters())
{
name += item.ParameterType.Name + " " + item.Name + ", ";
}
name = name.Substring(0, name.Length - 2) + ")" + " " + msg;
log.Info(name);
}
public static void Error(Exception ex)
{
var method = new StackFrame(1).GetMethod();
var name = method.DeclaringType.FullName + "." + method.Name + "(";
foreach (var item in method.GetParameters())
{
name += item.ParameterType.Name + " " + item.Name + ", ";
}
name = name.Substring(0, name.Length - 2) + ")";
name += ")";
log.Error(name, ex);
}
}
}
Datei web.config
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging"
type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/bin/log4net.config" />
</factoryAdapter>
</logging>
</common>
</configuration>
log4net.config Datei
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="DatabaseAppender" />
</root>
<appender name="DatabaseAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection,
System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=MyServer; initial catalog=MyDB;integrated security=false;
persist security info=True;User ID=MyUser;Password=MyPass" />
<commandText
value="INSERT INTO [Log]
([Date],[Thread],[Level],[Logger], [Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
</configuration>
Vielleicht tut es nicht Bewerben Sie sich für diese Anwendung, aber jederzeit greifen Sie auf das 'StackFrame', das ist teuer, nicht zu erwähnen, dass' string + string' anstelle von 'StringBuilder' für die Performance verwendet wird. Das Letzte, was Sie möchten, dass Ihre App als Artefakt der Protokollierung crawlt. –