You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by Ron Grabowski <ro...@yahoo.com> on 2010/06/10 16:26:42 UTC
Re: Unable to log to database
Do you get the same errors if you use the shorter syntax from the log4net website:
<layout type="log4net.Layout.PatternLayout" value="%level" />
________________________________
From: Sachin Nair <sa...@gmail.com>
To: log4net-user@logging.apache.org
Sent: Tue, May 25, 2010 7:27:28 AM
Subject: Unable to log to database
Hi,
I am using powershell to log some information to database. Here
are the details.
1. Code: Log4NetTest.ps1
$ErrorActionPreference="Stop"
# load the log4net library
[void][Reflection.Assembly]::LoadFile("C:\Log4netTest\log4net.dll")
# Reset any log4net configuration to defaults.
[log4net.LogManager]::ResetConfiguration()
# configure logging
$configFileInfo = gi "C:\Log4netTest\log4net.xml"
[log4net.Config.XmlConfigurator]::ConfigureAndWatch($configFileInfo)
$logger = [log4net.LogManager]::GetLogger("MyLogs")
$logger.info("Started")
try
{
$logger.info("Trying to create a file in the current directory ...")
New-Item -ItemType file test.txt
$logger.info("Trying to create the same file again in the current directory ...")
New-Item -ItemType file test.txt
}
catch
{
$logger.Error("You have an error")
$logger.Fatal($_.Exception.message)
$logger.Fatal($_.Exception.Message,$_.Exception)
}
finally
{
$logger.Info("Ended")
}
2. Configuration
file : log4net.xml
<!-- This section contains the log4net configuration settings -->
<log4net>
<!-- Example of how to configure the AdoNetAppender to connect to MS SQL Server -->
<appender name="ADONetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=[Sqlserver];initial catalog=[Database];integrated security=false;persist security info=True;User ID=sa;Password=[password]" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</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="@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>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="ADONetAppender_SqlServer" />
</root>
<!-- Specify the level for some specific categories -->
<logger name="MyLogs">
<level value="ALL" />
<appender-ref ref="ADONetAppender_SqlServer" />
</logger>
</log4net>
3. Table :
CREATE TABLE
[dbo].[Log]
(
[Id] [int] IDENTITY (1,
1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread]
[varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar]
(2000) NULL
)
Output : output.txt
PS C:\Log4netTest> .\Log4NetTest.ps1
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [ADONetAppender_SqlServer] of type [log4net.Appender.A
doNetAppender]. Reported error follows.
System.ArgumentNullException: CreateConverterInstance cannot create instance, converterType is null
Parameter name: converterType
at log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(Type converterType)
at log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(Type destinationType)
at log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(Type destinationType)
at log4net.Util.OptionConverter.CanConvertTypeTo(Type sourceType, Type targetType)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetTy
pe, Type typeConstraint)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetTy
pe, Type typeConstraint)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR XmlHierarchyConfigurator: Appender named [ADONetAppender_SqlServer] not found.
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [ADONetAppender_SqlServer] of type [log4net.Appender.A
doNetAppender]. Reported error follows.
System.ArgumentNullException: CreateConverterInstance cannot create instance, converterType is null
Parameter name: converterType
at log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(Type converterType)
at log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(Type destinationType)
at log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(Type destinationType)
at log4net.Util.OptionConverter.CanConvertTypeTo(Type sourceType, Type targetType)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetTy
pe, Type typeConstraint)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetTy
pe, Type typeConstraint)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR XmlHierarchyConfigurator: Appender named [ADONetAppender_SqlServer] not found.
Directory: C:\Log4netTest
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/25/2010 1:54 PM 0 test.txt
All the files
can be found in the attached zip file.
Please modify the connection
string in the xml file.
When we have all the things like i mentioned nothing gets written to the database instead i get an error mentioned in the output.txt file.
It seems that there is some issues with the data types for the parameters
I've mentioned in the XML file. I say this because if i comment all the
other parameters except the date i.e. @log_date everything works
fine i see the logs in the table provided the other columns are set to
have null values. By the way i am using SQLSever2008 for the database.
I would really appreciate it if anyone can look into this and help
me out.
Thanks in advance :)
Warm Regards
Sachin Nair