Tengo la configuración de log4net y estoy configurado para insertar en una tabla sql server 2005. Mi mesa se llama Log. Cuando llamo al método log4net, no ingresa ningún dato en la base de datos de registro en el servidor sql. No recibo ningún error del código C# de mi cliente. ¿Debo agregar un usuario a la tabla de registro en sql? En este momento estoy usando la autenticación de Windows.¿Log4net no se está insertando en la base de datos?
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
connectionString value="Data Source=V-FIN-SQL-D\SQL2005;Initial Catalog=DevMHAIC;Integrated Security=True;Connection Timeout=360" />
<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="32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%c" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ADONetAppender" />
</root>
</log4net>
Aquí está mi código SQL para la base de datos de registro:
CREATE TABLE [dbo].[Log](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NULL,
[Thread] [varchar](255) NULL,
[Level] [varchar](50) NULL,
[Logger] [varchar](255) NULL,
[Message] [varchar](4000) NULL,
[Exception] [varchar](2000) NULL
) ON [PRIMARY]
Aquí es mi clase que estoy usando para llamar a la log4net.
public class ErrorLog : ILog
{
log4net.ILog _Log;
/// <summary>
/// Initializes a new instance of the <see cref="ErrorLog"/> class.
/// </summary>
/// <param name="log">The log.</param>
public ErrorLog(log4net.ILog log) : this()
{
_Log = log;
}
/// <summary>
/// Initializes a new instance of the <see cref="ErrorLog"/> class.
/// </summary>
public ErrorLog()
{
_Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.Configure();
}
/// <summary>
/// Informationals the specified message.
/// </summary>
/// <param name="message">The message.</param>
public void informational(string message)
{
_Log.Info(message);
}
/// <summary>
/// Informationals the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
public void informational(string message, Exception innerException)
{
_Log.Info(message, innerException);
}
/// <summary>
/// Debugs the specified message.
/// </summary>
/// <param name="message">The message.</param>
public void debug(string message)
{
_Log.Debug(message);
}
/// <summary>
/// Debugs the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
public void debug(string message, Exception innerException)
{
_Log.Debug(message, innerException);
}
/// <summary>
/// Errors the specified message.
/// </summary>
/// <param name="message">The message.</param>
public void error(string message)
{
_Log.Error(message);
}
/// <summary>
/// Errors the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
public void error(string message, Exception innerException)
{
_Log.Error(message, innerException);
}
/// <summary>
/// Warnings the specified message.
/// </summary>
/// <param name="message">The message.</param>
public void warning(string message)
{
_Log.Warn(message);
}
/// <summary>
/// Warnings the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
public void warning(string message, Exception innerException)
{
_Log.Warn(message, innerException);
}
}
Aquí es mi interfaz:
public interface ILog
{
/// <summary>
/// Informationals the specified message.
/// </summary>
/// <param name="message">The message.</param>
void informational(string message);
/// <summary>
/// Informationals the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
void informational(string message, Exception innerException);
/// <summary>
/// Debugs the specified message.
/// </summary>
/// <param name="message">The message.</param>
void debug(string message);
/// <summary>
/// Debugs the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
void debug(string message, Exception innerException);
/// <summary>
/// Errors the specified message.
/// </summary>
/// <param name="message">The message.</param>
void error(string message);
/// <summary>
/// Errors the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
void error(string message, Exception innerException);
/// <summary>
/// Warnings the specified message.
/// </summary>
/// <param name="message">The message.</param>
void warning(string message);
/// <summary>
/// Warnings the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="innerException">The innerException.</param>
void warning(string message, Exception innerException);
}
¿Puedes publicar tu archivo de configuración Log4Net? – taylonr