How to save log4net log into database || How to use log4net in .net ||What is Log4net
Log4net is an open source .net library to log output to a variety of sources like console, SMTP, Plain text, Database etc. Log4net is a port of the popular log4J library used in Java. Log4net developed by Apache Foundation. Full details of log4net can be found at its project homepage. Its powerful tool to logging application output to different targets. Log4net provide different types of provider to save logging into plain text, database etc. Log4net enable logging at runtime without modifying the application binary. Its provide high speed of logging.
Log4net is the notion of hierarchical loggers log4net is designed for speed and flexibility
Home page of log4net- http://logging.apache.org/log4net/index.html
Following is steps to save log4net log into database
1. Add Log4net.dll into your project
2. Add log4net into Global.asax.cs
3. Register log4net in configSections
4. Use log4net configuration in web.config sections
5. Create a database and table to save log into Sql server. I am creating "Log4NetTest" database and "AppLog" table to save log into database
6. Use following Log4net settings in your controller, where you want use log4net
Step 1 . Add Log4net.dll into your project
Add log4net "log4net.dll" library into your project. you can download log4net binary from following URL
https://logging.apache.org/log4net/download_log4net.cgi
Its contains different bin file for different .net version. You can add log4net.dll according to your requirement and .net version.
Or
Package Manager - You can install log4net via package manager
Go to Tools>>NuGet Package Manager >> Package Manager
then run
PM> Install-Package log4net
Step 2. Add log4net into Global.asax.cs
Add following code into Global.asax.cs file on "Application_Start()" event.
log4net.Config.XmlConfigurator.Configure();
Step 3. Register log4net in configSections
Add following code into configSections in web.config
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
Step 4. Use log4net configuration in web.config sections
Add following code below configSections in web.config
Set your database connection string in "
connectionString"
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| <log4net> <!--AdoNet appender is use for write log file into sql server--> <appender name= "AdoNetAppender" 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=[SqlServer];Initial Catalog=[DatabaseName];user id=sa;password=[System12345];" /> <commandText value="INSERT INTO AppLog ([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> <!--Add appender which you want to use, You can add more then one appender . Like if you want save log both plain text or sql server ,Add both appender.--> <root> <level value= "ALL" /> <appender- ref ref = "AdoNetAppender" /> <!--Enable this line if you want write log file into sql server--> </root> </log4net> |
<log4net> <!--AdoNet appender is use for write log file into sql server--> <appender name="AdoNetAppender" 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=[SqlServer];Initial Catalog=[DatabaseName];user id=sa;password=[System12345];" /> <commandText value="INSERT INTO AppLog ([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> <!--Add appender which you want to use, You can add more then one appender . Like if you want save log both plain text or sql server ,Add both appender.--> <root> <level value="ALL" /> <appender-ref ref="AdoNetAppender" /> <!--Enable this line if you want write log file into sql server--> </root> </log4net>
Step 5. Create a database and table to save log into sql server. I am creating "Log4NetTest" database and "AppLog" table to save log into database
--Sql Script for save log4net log into sql server database
1
2
3
4
5
6
7
| Create database Log4NetTest Use Log4NetTest CREATE TABLE[dbo].[AppLog]( [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](max) NOT NULL, [Exception][varchar] (max) NULL) ON[PRIMARY] TEXTIMAGE_ON[PRIMARY] |
Create database Log4NetTest Use Log4NetTest CREATE TABLE[dbo].[AppLog]( [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](max) NOT NULL, [Exception][varchar] (max) NULL) ON[PRIMARY] TEXTIMAGE_ON[PRIMARY]
Select * from AppLog
Step 6. Use following Log4net settings in your controller, where you want use log4net
1
2
3
4
5
6
7
8
9
| private static log4net.ILog Log { get ; set ; } ILog log = log4net.LogManager.GetLogger( typeof (classtype)); //type of class log.Debug( "Debug message" ); log.Warn( "Warn message" ); log.Error( "Error message" ); log.Fatal( "Fatal message" ); |
private static log4net.ILog Log { get; set; } ILog log = log4net.LogManager.GetLogger(typeof(classtype)); //type of class log.Debug("Debug message"); log.Warn("Warn message"); log.Error("Error message"); log.Fatal("Fatal message");
Comments
Post a Comment